使用了下面的代码:request(firstparams, function () { var secondparams = { // ****** }; request(secondparams, function () { for (i=0; i<3; i++) { var thirdparams = { // ****** }; request(thirdparams, function () { console.log('foo'); }); } console.log('bar'); });}); 想要获得如下的结果:foofoofoobar但是结果却是:barfoofoofoo
1 回答
繁星coding
TA贡献1797条经验 获得超4个赞
用Promise.all吧,可以等待多个请求都结束了使用then处理后面的行为
写个demo 适当改一下应该就可以了
// ajax函数 可以用request封装var ajax = (url, type) => { return new Promise((resolve, reject) => { // 这块可以自己修改一下
request({
url, cb: function(data) { console.log('foo')
resolve(data)
}
})
})
}// 生成promise要用的数组var arr = []for (i=0; i<3; i++) {
arr.push(ajax('/xxx/xxx'))
}// 执行 等到三次请求都结束后 打印出来bar 因为每次请求都打印foo// 所以结果应该是foo foo foo barPromise.all(arr).then((value) => {
console.log('bar')
})添加回答
举报
0/150
提交
取消
