在函数中承诺错误

时间:2016-08-01 03:51:49

标签: javascript node.js 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中出现的错误?

1 个答案:

答案 0 :(得分:0)

任何ul { font-size:0; text-align:center; } ul li { font-size:16px; } 处理程序中抛出的异常将自动被promise基础结构捕获,并将当前的promise链变为被拒绝的promise。然后链将跳转到下一个.then()处理程序,其中异常将是错误拒绝原因。

以下是一个例子:

.catch()