设计 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中文网其他相关文章!