假设我的代码中有几个类似的地方
axios({
method: 'post',
url: myurl,
data: mydata
}).then(...)
我希望各种axios请求同步执行:下一个请求必须等待上一个请求的then
回调才能发送到服务器。
似乎我要问的是诺言能为您提供什么(例如,将多个then
链接在一起)。由于Axios基于Promise,因此我认为它应该能够做到这一点。但奇怪的是,我在任何地方都找不到此信息。
请注意,我事先并不知道所有要发送的请求:有一个请求,然后第二个可能会在第一个请求完成之前到达,等等。
添加:我也想知道如何通过自己创建Promises,直接发送异步Http请求来实现我的要求。似乎很奇怪,为此设计的库无法提供这种可能性。
答案 0 :(得分:0)
好吧,我不知道以下内容:如果作为参数传递给then
调用的函数的返回返回了Promise,则此诺言将在进一步的then
调用之前得到解决。具体来说,我认为以下实现了我想要的:
一次,在脚本开头:
let requestSender = Promise.resolve('');
然后每当我需要发送请求时:
requestSender.then(prev =>
axios({method: 'post', url: myurl, data: mydata}).then(...))
这样,每个新的axios请求将在发送之前等待上一个请求结束。