承诺 – 尝试,直到它成功

我使用本地node.js的诺言, 这里的问题给了我任何一点。 基本上,我有如下function:

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函数; 如果被拒绝,那么再试一次。

我不知道如何构build链条。 任何帮助? 谢谢。

尝试使用recursion包括foo声明中的function

 function foo() { var n = String(new Date().getTime()).slice(-1); // if `n` < 5 reject `n` , else resolve `n` return Promise[n < 5 ? "reject" : "resolve"](n) .then(function(value) { return value // here I choose if I want to resolve or reject. }) .catch(function(err) { return Promise.reject(["rejected", err]) }); } (function repeat() { var promise = Promise.resolve(foo()); return promise .then(function(data) { console.log("complete", data) // 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. console.log(err); if (err[0] === "rejected") repeat() }) }())