我们如何处理在promise的then
函数中出现的错误?
getLocationId(lat, lon, callback)
{
let self = this;
return this._geocoder.reverse({lat: lat, lon: lon})
.then(this._parse)
.catch(function(err) {
callback(err);
});
}
_parse(res)
{
if (res.length < 1)
throw new Error('No results from Maps API');
let value = res[0].administrativeLevels;
if (!value || value.length < 1) {
throw new Error('No administrative levels available');
}
if ('level2long' in value)
return value.level2long;
if ('level1long' in value)
return value.level1long;
throw new Error('No suitable location found');
}
例如,我该如何处理
this._parse
抛出的错误?我以为 promise 的 catch
函数只处理 reject
处理程序。它是否也处理在 then
中抛出的错误?
callback
。可以使用getLocationId(lat, lon).catch(errorHandler)
来达到完全相同的效果,而不是使用getLocationId(lat, lon, errorHandler)
。 - Roamer-1888.catch()
(随便叫什么都可以)只对 Promise 失败做出响应。 - Andrew