我在調用web服務的控制器中使用$ http get來檢索一些數據。這是下面的代碼:JavaScript - 減速循環
UPDATE碼:
var boolGetBoothCoords = false;
BoothDesignatedCoordsService.getBoothDesignatedCoords(strListShortListedBooth[i], 3)
.then(function(response) {
var data = response.data
console.log('data', data.arrBoothDesignatedCoords)
boothDesignatedCoords = data.arrBoothDesignatedCoords;
boolGetBoothCoords = true;
})
console.log("boothDesignatedCoords ", boothDesignatedCoords); // undefined
// And a lot of other codes
然而,由於$ HTTP GET是異步方法,程序將立即boothDesignatedCoords是未定義後調用控制檯日誌和代碼。我不要那個。我希望程序在Web服務使用完成後調用控制檯日誌和代碼。所以我做了以下使用這樣的回答:how to slow down a javascript loop:
go();
function go() {
console.log("hello");
if (boolGetBoothCoords == false) {
setTimeout(go, 1000);
}
else
{
}
}
go()
console.log("boothDesignatedCoords ", boothDesignatedCoords); // undefined
// OTHER CODES that uses variable boothDesignatedCoords will be undefined as well
不過,我不知道爲什麼它仍然會調用控制檯日誌,但Web服務消費還沒有完成,儘管使用這種方法。有人可以幫幫我嗎?謝謝。
爲什麼不在'fnProceedOtherTask1()'調用的最後'then'回調中包含'console.log'? – andrusieczko
對不起,感到困惑。我仍然更新了我的問題 – Antoni
,最好在最後一次回調中打印它比等待使用'setTimeout'更好...如果服務器響應時間超過1秒會發生什麼?它仍然是undefined – andrusieczko