js中for循环里面有异步请求怎么解决?
axios.post('/operationlog/list', moduleParams).then((res) => {
if (res.status === 200) {
this.moduleList = res.data.items;
stepParams.append('category', "");
stepParams.append('needPlayback', true);
for (let i = 0; i < this.moduleList.length; i++) {
stepParams.set('category', this.moduleList[i].category)
axios.post('/operationlogitem/list', stepParams).then((res) => {
console.log(res.data.items);
}).catch((e) => {
console.log(e);
})
}
}
}
代码如上,根据外层请求获取到多个不同的category,但是for循环是同步,里面的post请求是异步的,所以始终以最后一项的category为参数发送请求.请问如何修改代码按照每一项的category参数发送post请求,目前只知道用递归解决,有没有其他办法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
可以用生成器函数或者async/await再用babel转
可以用async/await
其实是闭包问题,也可以使用async/await来解决
闭包问题,简单解决.
但是
let
关键字应该就能避免这个问题了参照:
https://www.cnblogs.com/CoderMonkie/p/js-async-in-loop.html