我们如何处理承诺的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
中出现的错误?
答案 0 :(得分:0)
任何ul {
font-size:0;
text-align:center;
}
ul li {
font-size:16px;
}
处理程序中抛出的异常将自动被promise基础结构捕获,并将当前的promise链变为被拒绝的promise。然后链将跳转到下一个.then()
处理程序,其中异常将是错误拒绝原因。
以下是一个例子:
.catch()