如何与axios同步链接请求?

时间:2018-11-08 00:22:10

标签: javascript axios

假设我的代码中有几个类似的地方

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

我希望各种axios请求同步执行:下一个请求必须等待上一个请求的then回调才能发送到服务器。

似乎我要问的是诺言能为您提供什么(例如,将多个then链接在一起)。由于Axios基于Promise,因此我认为它应该能够做到这一点。但奇怪的是,我在任何地方都找不到此信息。

请注意,我事先并不知道所有要发送的请求:有一个请求,然后第二个可能会在第一个请求完成之前到达,等等。

添加:我也想知道如何通过自己创建Promises,直接发送异步Http请求来实现我的要求。似乎很奇怪,为此设计的库无法提供这种可能性。

1 个答案:

答案 0 :(得分:0)

好吧,我不知道以下内容:如果作为参数传递给then调用的函数的返回返回了Promise,则此诺言将在进一步的then调用之前得到解决。具体来说,我认为以下实现了我想要的:

一次,在脚本开头:

let requestSender = Promise.resolve('');

然后每当我需要发送请求时:

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

这样,每个新的axios请求将在发送之前等待上一个请求结束。