Мне нужно отправить серию запросов PUT и POST от Service Worker. Порядок, в котором они отправляются, имеет значение.
Требования:
- Учитывая метод запроса, URL-адрес и тело JSON, отправьте запрос
- If it succeeds (
response.status < 300
):- Pass body to a success function
- Вызов следующего запроса в очереди
- If it fails:
- Pass responseText or err to error function
- Остановить выполнение
Если я просто перебираю очередь и вызываю fetch
для каждого запроса, дисперсия сети может (часто так и происходит) привести к тому, что запросы поступят на сервер не по порядку.
Как сделать цепочку из fetch
запросов, где каждый результат зависит от успеха предыдущего?
Что я пробовал:
- Вместо этого XHR (при условии, что я мог бы использовать «async: false», но это не разрешено в Service Worker).
setTimeout(sendRequest, i*200)
. Взлом, не надежный.Promise loops
на основе этих примеров Шаблоны промисов ES6. Это казалось наиболее многообещающим, но примеры приведены для простого случая, когда предполагается успех. Не могу заставить его работать с выборкой.
Контекст: я использую "исходящие" запросы API для поддержки автономного чтения, создания и обновления данных. Работает хорошо, за исключением этой проблемы с заказом.