免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
javascript – 節(jié)點js for-loop在下一次迭代之前等待異步函數(shù)?

我正在創(chuàng)建一個每隔一段時間刷新一次數(shù)據(jù)的函數(shù),而且我遇到了我的請求鏈問題.問題是我有一個for循環(huán)運行異步請求,for循環(huán)將在請求完成之前完成.

setInterval(function(){ // this updates the total hours of all members every 10 seconds    request({ // this gets all of the loyalty program members        url: "",//omitted        method: "GET"    },        function(listError, listResponse, listBody) {            if(listError == null && listResponse.statusCode == 200) {                var varBody = {};                var listObj = JSON.parse(listBody);                for(var i = 0; i < listObj.result.length; i  ) { // parses through all of the members to update their hours                    console.log(i);//****PRINT STATEMENT                    varBody.index = i;                    varBody.memberID = listObj.result[i].program_member.id;                    request({ //we do this request to get the steam ID of the program member                            url: "",//omitted                            method: "GET"                        },                        function(fanError, fanResponse, fanBody) {                            var fan = JSON.parse(fanBody);                            if(fanError == null && fanResponse.statusCode == 200 && fan.result.profiles.length != 0) { // make sure that the profile isn't empty                                request({                                        url:"",//omitted                                        method: "GET"                                    },                                    function(hourError, hourResponse, hourBody) {                                        if (hourError == null && hourResponse.statusCode == 200) {                                            var gameList = JSON.parse(hourBody);                                            var minutes = 0;                                            for (var j = 0; j < gameList.response.games.length; j  ) { // for loop to calculate the minutes each user has on steam                                                minutes  = gameList.response.games[j].playtime_forever;                                            }                                            var deltaHours = 1;                                            if(deltaHours != 0) {                                                var transaction = { // updated member object to be inserted                                                    pointsearned: deltaHours,                                                    pointsused: 0,                                                    loyaltyprogram_id: loyaltyID,                                                    programmember_id: memberID                                                };                                                request({ // POST request to update the member                                                        url: "",//omitted                                                        method: "POST",                                                        body: JSON.stringify(transaction),                                                        headers: {                                                            "Content-Type": "application/json"                                                        }                                                    },                                                    function(updateError, updateRes, updateBody) {                                                        if(updateError == null && updateRes.statusCode == 200) {                                                            console.log("Success");//****PRINT STATEMENT                                                        }                                                    }                                                );                                            }                                        }                                    }                                );                            }                        }                    );                }            }            console.log("Users Updated"); //****PRINT STATEMENT        }    );}, 10000);

如果我要運行此代碼,它將打?。?/p>

0123SuccessSuccessSuccessSuccess

我知道問題是什么.事實是for循環(huán)不等待請求完成.我不知道的是解決這個問題.有沒有人有任何想法?

解決方法:

你想要async庫.

例如,

for(var i = 0; i < listObj.result.length; i  ) {    varBody.index = i;    varBody.memberID = listObj.result[i].program_member.id;    request(        ...    , function () {        // Do more Stuff    });}

可以這樣寫:

async.forEachOf(listObj.result, function (result, i, callback) {    varBody.index = i;    varBody.memberID = result.program_member.id;    request(        ...    , function () {        // Do more Stuff        // The next iteration WON'T START until callback is called        callback();    });}, function () {    // We're done looping in this function!});

在異步中有很多方便的實用程序函數(shù),這使得回調(diào)更容易.

來源:https://www.icode9.com/content-1-480351.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Promise對象
使用 Dojo 的 Ajax 應(yīng)用開發(fā)進階教程,第 6 部分: Dojo 基本庫深入介紹
Ajax 運用 Deferred異步處理
jQuery Ajax 實例 ($.ajax、$.post、$.get)
Web-第十五天 Ajax學習【悟空教程】
Node.js 文件系統(tǒng)操作
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服