gpt4 book ai didi

javascript - 那我们能得到当前的 promise 吗?

转载 作者:行者123 更新时间:2023-11-29 10:08:16 24 4
gpt4 key购买 nike

我想有一些机制来重做然后在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com