javascript - 如何使用async :false in angular js 1. 6,让java脚本下一行执行get block until $http completed

标签 javascript angularjs

目前,我正在使用 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/

相关文章:

javascript - 如何在不使用 SVG 图像的情况下使用带有文本的 React 创建圆形/方形?

javascript - 如何防止 CSS3 转换使元素不可点击

javascript - 当我在 $scope 中设置数据时,在 bootstrap 模式上获取数据时遇到 angularJs 中的问题

angularjs - 在 Protractor 测试中创建 socket.io 服务器

javascript - 基于 JQuery 克隆元素构建 JSON

javascript - 在 ECMAScript 上使用 JSDoc 和扩展语法

javascript - Javascript 中加载事件的竞争条件

javascript - 从运行时 block 加载生成的 webpack block

javascript - 从使用 Angular 的站点上抓取数据时,如何访问元素的 ng-model?

javascript - 从 JSON 对象列表中删除对象