我有一个 promise P,它检查服务器上的状况(已验证电子邮件)。

P可以解析->已验证电子邮件

或失败->代码电子邮件未验证

或失败->出现其他错误代码(电子邮件不存在等)

我想创建另一个 promise WaitP,它将等待P解决或由于未验证的电子邮件以外的代码而失败。

所以WaitP会:

  • 问题P

    如果P解决,请解决WaitP

    如果P失败且未验证代码电子邮件,请返回1(再次发出P)

    如果P因未通过电子邮件验证的代码失败而失败,则使WaitP
  • 失败

    我怎样写这样的 promise ?

    我希望没有递归的解决方案

    谢谢!

    最佳答案

    只需从catch处理程序中递归地调用您的函数:

    function waitP() {
        return P().catch(function(err) {
            if (err.code == "email unverified")
                return waitP(); // try again
            else
                throw err;
        });
    }
    

    不过,您可能想向递归调用添加一个计数器或延迟,以便在P()快速反复地无限次失败时,您的进程不会挂起。

    关于javascript - ES6-持续发出 promise ,直到其解决而不递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37876993/

    10-11 01:07