嵌套的 request,如何等待 request function 的完成?

使用了下面的代码:

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');

    });

}); 

想要获得如下的结果:

foo

foo

foo

bar

但是结果却是:

bar

foo

foo

foo


守着星空守着你
浏览 554回答 1
1回答

繁星coding

用Promise.all吧,可以等待多个请求都结束了使用then处理后面的行为&nbsp;写个demo 适当改一下应该就可以了//&nbsp;ajax函数&nbsp;可以用request封装var&nbsp;ajax&nbsp;=&nbsp;(url,&nbsp;type)&nbsp;=>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;Promise((resolve,&nbsp;reject)&nbsp;=>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;这块可以自己修改一下 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request({ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cb:&nbsp;function(data)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('foo') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resolve(data) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;}) }//&nbsp;生成promise要用的数组var&nbsp;arr&nbsp;=&nbsp;[]for&nbsp;(i=0;&nbsp;i<3;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;arr.push(ajax('/xxx/xxx')) }//&nbsp;执行&nbsp;等到三次请求都结束后&nbsp;打印出来bar&nbsp;因为每次请求都打印foo//&nbsp;所以结果应该是foo&nbsp;foo&nbsp;foo&nbsp;barPromise.all(arr).then((value)&nbsp;=>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; console.log('bar') })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript