【发布时间】:2016-02-16 13:23:07
【问题描述】:
我正在使用本机 node.js 的 Promises,而问题 here 确实给了我任何一点。 基本上,我有如下功能:
var foo = foo (resolve, reject) {
return obj
.doA()
.doB()
.then(function (value) {
// here I choose if I want to resolve or reject.
})
.catch(function(err) {
});
}
var promise = new Promise(foo);
return promise
.then(function() {
// I know here what I have to return.
})
.catch(function(err){
// I want to repeat the foo function until it is resolved and not rejected.
})
obj 是一个承诺的对象。只要承诺得到履行,我就想重试 foo 函数;如果被拒绝,请再试一次。
我不知道如何构建链。有什么帮助吗? 谢谢。
【问题讨论】:
-
只要 promise 被履行和只要 promise 被拒绝都是 super 相似的。唯一的区别是检查
.catch与.then- 你可能想问如何将被拒绝的承诺转换为已履行的承诺,反之亦然。绝对是重复的。 -
该副本中的答案似乎过于复杂并且不适合这个问题 - 恕我直言 - 并且无法解决此代码的一些基本问题,例如这段代码中根本不需要
new Promise -
@BenjaminGruenbaum 的副本?在使用 node.js 的本机 Promises 实现之前,我没有看到任何关于循环 Promise 的问题。请分享一个链接。谢谢。
-
Pfft,这已关闭的副本实际上是同一件事......但如果你必须有完全相同的场景:
const retry = fn => _ => fn().catch(retry(fn))。
标签: javascript node.js promise