承诺 – 尝试,直到它成功
我使用本地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() }) }())