【发布时间】:2015-12-04 06:40:03
【问题描述】:
我需要从 Service Worker 发送一系列 PUT 和 POST 请求。发送它们的顺序很重要。
要求:
- 给定请求方法、url 和 JSON 正文,发送请求
- 如果成功 (
response.status < 300):- 将正文传递给成功函数
- 调用队列中的下一个请求
- 如果失败:
- 将 responseText 或 err 传递给错误函数
- 停止执行
如果我只是简单地遍历队列并为每个请求调用 fetch,网络差异会(通常会)导致请求无序到达服务器。
如何创建一个fetch 请求链,其中每个结果取决于前一个的成功?
我尝试过的:
- 改为 XHR(假设我可以使用“async: false”,但这在 Service Worker 中是不允许的)。
-
setTimeout(sendRequest, i*200)。黑客,不可靠。 -
Promise loops基于这些示例 ES6 Promise Patterns。这似乎是最有希望的,但这些示例是针对假设成功的简单案例。无法让它与 fetch 一起使用。
上下文:我正在使用 API 请求的“发件箱”来支持离线读取、创建和更新数据。效果很好,除了这个排序问题。
【问题讨论】:
-
注意:我使用的是原生 ES6 Promises,而“重复”问题是指其他库。
标签: javascript promise es6-promise service-worker