javascript - JS Q 库 - 延迟错误捕获

标签 javascript promise deferred q

我正在发现 Kris Koval Q 库,但遇到了问题。看这个简单的代码:

function getPromise1() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 1 OK');
        deferred.resolve();
    }, 1000);
    return deferred.promise;
}


function getPromise2() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 2 Failed');
        deferred.reject();
    }, 1000);
    return deferred.promise;
}

getPromise1()
    .then(getPromise2())
    .fail(function () {
        alert('Fail!');
    })
    .done();

我希望看到:

Promise 1 OK
Promise 2 Failed

然后显示警报“失败!”,但警报从未显示。相反,我在控制台中看到警告:

[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"] 

为什么拒绝没有得到处理,我该如何处理?

最佳答案

then 函数中,您应该仅传递 getPromise2 函数,而不是 getPromise2() 的结果

getPromise1()
    .then(getPromise2)            // NOTE: We are not calling it here
    .fail(function () {
        console.log('Fail!');
    })
    .done();

关于javascript - JS Q 库 - 延迟错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064865/

相关文章:

javascript - 访问 ionic 项目中自定义 cordova 插件的项目资源

javascript - javascript 中的多个数组无法传递值

node.js - 对 Promise 结果运行多个测试 - Mocha

javascript - JavaScript 中的 Promise 与 Java 中的异常处理类似吗?

javascript - 非异步 Promise 回调

angular - 相当于 $q.when 在 Angular 2

php - 将数组作为 json 发送到 php 脚本 : returns empty array

javascript - 缩写的正则表达式

javascript - 使用 Q.deferred 捕获错误

python - 当我不需要 yield 返回值时,@defer.inlineCallbacks 是什么意思?