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