[英]How to use async:false in angular js 1.6, so that java script next line execution get block until $http completed
當前,我正在使用angularjs 1.6,調用$http
初始化一個數組,並在angularjs控制器中經過1000行代碼后使用該數組,但是每次都會發生一些奇怪的事情。 有時我正確初始化了數組,有時卻沒有正確初始化。
基本上,我想按一定順序調用JavaScript代碼,例如line1,line2,line3等,在這里line1可以調用$http
,line2可以再次調用某些函數line3 $http
,
即使我嘗試使用
$http( { method:'POST',
url:'/getData',
async:false
})
但是它不保存執行JavaScript,而是執行下一行代碼。 有什么方法可以控制它,以便我可以以與編寫腳本相同的順序執行JavaScript代碼,
首先,在許多情況下,轉向“無異步”調用是一個壞主意。 您不知道此調用將花費多長時間,並且在此期間,您阻止了UI事件循環,因此沒有任何作用,並且您的網站在此期間將完全卡住,這是一件壞事。
取決於您使用的內容(ecma腳本/ javascript),但是異步功能似乎正是您要尋找的: https : //developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/async_function
范例:
async function myFunction(){
var data = await $http.get(...);
await $http.post(..);
return "my data";
}
由於使用關鍵字await ,該函數中的所有內容將按照其定義的順序執行,但仍處於異步狀態,整個函數將返回Promise。
myFunction().then(function(myData) {
console.log("End of the asynchrone function " + myData);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.