使用了下面的代码: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
提交
取消