我想有一些机制来重做然后在 promise 中发挥作用。继续这样做,直到它通过一些检查
somePromise.then(() => {
if(state == "finish")
return;
// DoSomething async then repeat these codes
// could we do it by [return this;] ?
}).then(() => console.log("finish"));
最佳答案
通常,您无法访问 .then()
处理程序中的当前 promise 。而且,在大多数情况下,您无论如何也无法做任何有用的事情。添加另一个 .then()
处理程序与您已经使用的 .then()
处理程序没有任何不同。一旦履行, promise 永远不会改变它们的状态。
如果你想重复一些事情,你可以从你想重复的事情中创建一个函数,然后从 .then()
处理程序中再次调用它,然后返回结果 promise (从而将其链接到之前的 promise )。
这是一个例子:
// utility delay function that returns a promise
function delay(t, val) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(val);
}, t);
});
}
// repeatedly call someAsyncOp() until we see the operation is finished
function repeatUntil(t) {
return someAsyncOp().then(function(state) {
if (state !== "finish") {
return delay(t).then(repeatUntil);
}
});
}
// sample usage
repeatUntil(5000).then(function() {
// state is finished here
}).catch(function(err) {
// error here
});
关于javascript - 那我们能得到当前的 promise 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758089/