gpt4 book ai didi

javascript - 如何在 Node.JS 中中止失败的 Q Promise

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:31 25 4
gpt4 key购买 nike

假设我正在构建一个注册流程,并且我有如下所示的内容:

Q.nfcall(validateNewRegCallback, email, password)
.fail(function(err){
console.log("bad email/pass: " + err);
return null;
})
.then(function(){
console.log("Validated!");
})
.done();

如果我的注册失败,我想捕获它,然后死掉。相反,我看到“错误的电子邮件/通行证”和“已验证”。为什么会这样,我怎样才能在第一次失败调用时中止?

最佳答案

fail 处理程序确实捕获了被拒绝的 promise ,但随后确实返回了一个已履行的 promise (在您的情况下为 null),因为错误已经被处理了......

那么你能采取什么措施来应对这种情况呢?

  • 重新抛出错误以拒绝返回的 Promise。它会导致 done 抛出它。

    Q.nfcall(validateNewRegCallback, email, password).fail(function(err){
    console.log("bad email/pass: " + err);
    throw err;
    }).then(function(){
    console.log("Validated!");
    }).done();
  • 处理成功回调后的错误(也处理成功回调中的错误):

    Q.nfcall(validateNewRegCallback, email, password).then(function(){
    console.log("Validated!");
    }).fail(function(err){
    console.log("bad email/pass: " + err);
    }).done();
  • 只需在同一个 Promise 中处理这两种情况 - 每个方法都接受两个回调:

    Q.nfcall(validateNewRegCallback, email, password).done(function(){
    console.log("Validated!");
    }, function(err){
    console.log("bad email/pass: " + err);
    };

    当然,您也可以使用 .then(..., ...).done()

关于javascript - 如何在 Node.JS 中中止失败的 Q Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com