ES6 - 继续发出承诺,直到它在没有递归的情况下解决
ES6 - keep issuing a promise until it resolves without recursion
我有一个承诺 P,它检查服务器上的条件(已验证电子邮件)。
P 可以解决 -> 电子邮件已验证
或失败 -> 代码电子邮件未验证
或失败 -> 代码其他错误(电子邮件不存在等)
我想创建另一个 promise WaitP,它将等待 P 解析或失败,并显示未验证的电子邮件以外的代码。
WaitP 是这样的:
问题P
如果P解析,解析WaitP
如果 P 失败,代码电子邮件未验证,返回 1(再次发出 P)
如果 P 失败且未验证电子邮件以外的代码,则失败 WaitP
这样的承诺怎么写?
我希望有一个解决方案没有递归。
谢谢!
只需从 catch
处理程序递归调用您的函数:
function waitP() {
return P().catch(function(err) {
if (err.code == "email unverified")
return waitP(); // try again
else
throw err;
});
}
尽管如此,您可能希望向递归调用添加计数器或延迟,这样如果 P()
快速且反复地无限失败,您的进程就不会挂起。
我有一个承诺 P,它检查服务器上的条件(已验证电子邮件)。
P 可以解决 -> 电子邮件已验证
或失败 -> 代码电子邮件未验证
或失败 -> 代码其他错误(电子邮件不存在等)
我想创建另一个 promise WaitP,它将等待 P 解析或失败,并显示未验证的电子邮件以外的代码。
WaitP 是这样的:
问题P
如果P解析,解析WaitP
如果 P 失败,代码电子邮件未验证,返回 1(再次发出 P)
如果 P 失败且未验证电子邮件以外的代码,则失败 WaitP
这样的承诺怎么写?
我希望有一个解决方案没有递归。
谢谢!
只需从 catch
处理程序递归调用您的函数:
function waitP() {
return P().catch(function(err) {
if (err.code == "email unverified")
return waitP(); // try again
else
throw err;
});
}
尽管如此,您可能希望向递归调用添加计数器或延迟,这样如果 P()
快速且反复地无限失败,您的进程就不会挂起。