Как синхронизировать запросы синхронно с axios? - PullRequest
0 голосов
/ 08 ноября 2018

Предположим, у меня в коде несколько мест с чем-то вроде

axios({
  method: 'post',
  url: myurl,
  data: mydata
}).then(...)

Я бы хотел, чтобы различные запросы axios выполнялись синхронно: следующий должен ждать обратного вызова then предыдущего, прежде чем он будет отправлен на сервер.

Кажется, что я спрашиваю именно то, что могут предложить вам обещания (скажем, несколько then). Поскольку Axios основан на Promise, я полагаю, что он каким-то образом сможет это сделать. Но, как ни странно, я нигде не могу найти эту информацию.

Обратите внимание, что я не знаю заранее всех запросов, которые нужно отправить: есть первый, потом второй может прийти до того, как первый закончится, или нет, и так далее.

ДОБАВИТЬ ВКЛ .: Также я думаю, что вижу, как выполнить то, что я прошу, выполняя Обещания самостоятельно, отправляя напрямую асинхронные запросы Http. Просто кажется странным, что разработанная для этого библиотека не предоставляет такой возможности.

1 Ответ

0 голосов
/ 08 ноября 2018

Хорошо, я не знал следующее: если возвращение функции, переданной в качестве параметра для вызова then, возвращает Promise, то это обещание разрешается до дальнейших вызовов then. Конкретно, я думаю, что следующие достижения того, что я хочу:

Один раз, в начале скрипта:

let requestSender = Promise.resolve('');

Тогда всякий раз, когда мне нужно отправить запрос:

requestSender.then(prev => 
    axios({method: 'post', url: myurl, data: mydata}).then(...))

таким образом, каждый новый запрос axios будет ждать окончания предыдущего, прежде чем будет отправлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...