0
我們如何處理承諾的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
函數只處理reject
處理程序。它是否也處理在then
中引發的錯誤?
O.T.但相關:不需要傳遞'callback'。而不是'getLocationId(lat,lon,errorHandler)',getLocationId(lat,lon).catch(errorHandler)'可以達到同樣的效果。 –