目前,我正在使用 angularjs 1.6,调用 $http
来初始化一个数组,并在 angularjs Controller 中的 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);
});
关于javascript - 如何使用async :false in angular js 1. 6,让java脚本下一行执行get block until $http completed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362979/