簡體   English   中英

如何在angular js 1.6中使用async:false,以便Java腳本下一行執行得到阻塞,直到$ http完成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM