gpt4 book ai didi

javascript - promise : Repeat operation until it succeeds?

转载 作者:行者123 更新时间:2023-12-03 02:07:29 26 4
gpt4 key购买 nike

我想重复执行一个操作,并增加每个操作之间的超时时间,直到它成功或经过一定时间。我如何使用 Q 中的 Promise 来构建它?

最佳答案

我认为这里的所有答案都非常复杂。 Kos 的想法是正确的,但您可以通过编写更惯用的 Promise 代码来缩短代码:

function retry(operation, delay) {
return operation().catch(function(reason) {
return Q.delay(delay).then(retry.bind(null, operation, delay * 2));
});
}

并附上评论:

function retry(operation, delay) {
return operation(). // run the operation
catch(function(reason) { // if it fails
return Q.delay(delay). // delay
// retry with more time
then(retry.bind(null, operation, delay * 2));
});
}

如果您想在一定时间(假设 10 秒)后超时,您可以简单地执行以下操作:

var promise = retry(operation, 1000).timeout(10000);

该功能已内置于 Q 中,无需重新发明:)

关于javascript - promise : Repeat operation until it succeeds?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26694467/

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