我们如何处理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
引发错误?我认为catch
promise的功能仅与reject
处理程序有关。它也可以处理抛出的错误then
吗?
在任何.then()
处理程序中引发的异常都将被Promise基础结构自动捕获,并将当前的Promise链变成拒绝的Promise。然后,链将跳到下一个.catch()
处理程序,其中异常将是错误拒绝原因。
这是一个例子:
Promise.resolve().then(function() {
throw "foo";
}).then(function() {
console.log("in 2nd .then() handler"); // will not get here
}).catch(function(err) {
console.log(err); // will show "foo"
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句