javascript - JS promise : error handling concept

标签 javascript error-handling promise

我有一个执行 ajax 调用的函数,另一个处理错误的函数。目标是:将错误处理为更好的格式以供稍后使用(请参见下面的示例)。

问题:.then() 的第二次回调但没有被调用。

代码:

function _handleError(error) {
    //bring error info in better usable format
    ...

    return errorRes;
}

function getSth(...) {
    ...
    return $.ajax({
        url: baseUrl + query,
        type: "GET",
        headers: {
           ...
        }
    }).then(function (data) {
        var results = data.d.results;

        ... //Do mapping stuff

        return results;
    }, _handleError);
}

我想如何实现它:

getSth(...).then(function(results){
    ...
}, function(err){
    console.log(err);
    ... //Do more with error info
});

第二个函数赋予 .then()永远不会被调用,_handleError()是虽然。我很确定我误解了 Promise 概念。

最佳答案

如果在调用 _handleError 后,您希望 Promise 链继续被拒绝,那么您需要抛出或从 内部返回被拒绝的 Promise _handleError

如果您不返回任何内容或仅从 handleError 返回一个正常值,则 Promise 基础结构会假定您“处理”了错误,并且它不再是错误。这是按照 try/catch 建模的,如果您catch错误并且不重新抛出,则异常被视为已处理并且不会传播到更高级别。

示例:

function _handleError(err) {
    // do something to the error value
    let newError = new Error(...);

    // rethrow the error so the promise continues as rejected
    // and so that the next error handler on that promise chain will get called
    throw newError;
}

关于javascript - JS promise : error handling concept,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43721321/

相关文章:

node.js - BlueBird Promises 在 "Undefined"函数内部返回时返回 "then"

javascript - Wysihtml5和iframe视频的问题

javascript - 如何使用 <button type ="submit"> 标签提交表单

python - 令人困惑的python-无法将字符串转换为float

error-handling - RxJS 重试然后 catchError 不起作用

javascript - 使用生成器异步调用列表中的每个项目

javascript - D3 - 更新堆积条形图时遇到问题

javascript - 如何使 ExtJS 表格布局具有百分比而不是高度和宽度的绝对值?

swift - 在没有向下转换错误的情况下处理 Swift 4.2 中的错误

typescript - 带有 readline(询问者)问题的异步/等待循环