javascript - 如何与axios同步链接请求?
问题描述
假设我的代码中有几个地方有类似的东西
axios({
method: 'post',
url: myurl,
data: mydata
}).then(...)
我希望各种axios请求同步执行:下一个必须等待then
上一个的回调才能发送到服务器。
看来我所问的正是 promise 可以为您提供的东西(then
例如,通过链接几个)。由于 Axios 是基于 Promise 的,我想它应该能够做到这一点。但奇怪的是,我在任何地方都找不到这些信息。
请注意,我事先并不知道所有要发送的请求:有第一个请求,然后第二个请求可能在第一个请求完成之前到达,或者没有,依此类推。
补充:另外我想我知道如何通过自己做出承诺,直接发送异步 Http 请求来实现我的要求。为它设计的库不提供这种可能性似乎很奇怪。
解决方案
好的,我不知道以下内容:如果作为参数传递给then
调用的函数的返回返回一个 Promise,那么这个 Promise 会在进一步then
调用之前解决。具体来说,我认为以下实现了我想要的:
一次,在脚本的开头:
let requestSender = Promise.resolve('');
然后每当我需要发送请求时:
requestSender.then(prev =>
axios({method: 'post', url: myurl, data: mydata}).then(...))
这样,每个新的 axios 请求都会等待前一个请求结束后再发送。
推荐阅读
- git - 是否可以在每个 repo 的基础上为 NPM 添加代理设置?
- sql - 用 EXISTS 替换 IN 子句会导致意外结果
- python - 如何在生产中调试 ajax 视图?
- java - 如何在 Fragment 中实现 onKeyDown
- c# - 尝试使用 KeyCloak 授权我的 API - 如果我正在调试,则无法授权并引发错误
- c++ - 在写入之前检查 boost::interprocess::vector 是否有足够的容量?
- javascript - 获取给定半径内的纬度和经度,以及以米为单位的给定纬度和经度
- php - Symfony 4 中不使用 node.js 的 Webpack Encore 的替代方案
- python - 为什么我不能将我的列表(应用了一些函数)转换为 python 中的集合
- reactjs - 构建应用程序后创建反应应用程序配置文件