首页 > 解决方案 > 如何与axios同步链接请求?

问题描述

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

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

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

看来我所问的正是 promise 可以为您提供的东西(then例如,通过链接几个)。由于 Axios 是基于 Promise 的,我想它应该能够做到这一点。但奇怪的是,我在任何地方都找不到这些信息。

请注意,我事先并不知道所有要发送的请求:有第一个请求,然后第二个请求可能在第一个请求完成之前到达,或者没有,依此类推。

补充:另外我想我知道如何通过自己做出承诺,直接发送异步 Http 请求来实现我的要求。为它设计的库不提供这种可能性似乎很奇怪。

标签: javascriptaxios

解决方案


好的,我不知道以下内容:如果作为参数传递给then调用的函数的返回返回一个 Promise,那么这个 Promise 会在进一步then调用之前解决。具体来说,我认为以下实现了我想要的:

一次,在脚本的开头:

let requestSender = Promise.resolve('');

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

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

这样,每个新的 axios 请求都会等待前一个请求结束后再发送。


推荐阅读