首页  >  文章  >  web前端  >  异步 Promise 重试存在哪些设计模式?

异步 Promise 重试存在哪些设计模式?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-22 18:53:03277浏览

Which Design Patterns Exist for Asynchronous Promise Retries?

设计 Promise 重试模式

在异步编程中,重试失败的 Promise 直到它们解决通常很有用。以下是使用 Promise 实现此目的的三种设计模式:

1。重试直到 Promise 解决(具有延迟和最大重试次数)

此模式允许您重试 Promise 直到它成功解决,每次重试之间有一个延迟。它使用 for 循环创建 .catch() 处理程序链,然后使用 .then() 处理程序来成功解析。

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).catch(rejectDelay);
}
p = p.then(processResult).catch(errorHandler);</code>

2.重试直到结果满足条件(无延迟)

此模式允许您重试承诺,直到结果满足特定条件。它使用与之前的模式类似的 .catch() 链方法,但它使用 .then() 处理程序来测试结果,而不是rejectDelay。

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).then(test);
}
p = p.then(processResult).catch(errorHandler);</code>

3.重试直到条件满足结果(有延迟)

此模式结合了前两种模式,允许您重试 Promise 直到满足条件,每次重试之间有一个延迟。它使用 .catch() 链来处理重试,并使用 .then() 处理程序来执行测试并引入延迟。

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).then(test).catch(rejectDelay);
}
p = p.then(processResult).catch(errorHandler);</code>

这些模式提供了一种简洁有效的方法来处理 Promises 的重试,确保即使发生故障您的代码也能继续执行。可以对它们进行定制以满足您的应用程序的特定需求,平衡最大重试次数、延迟间隔和重试条件等因素。

以上是异步 Promise 重试存在哪些设计模式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn