javascript - Angular 异步调用没有按预期结束 while 循环

标签 javascript angularjs

var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope, $http) {
    for(var i=0;i<2;i++){
       //var temp;
       $http.get("https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js")
      .then(function(response) {
          console.log("inside");
        //  temp=10;
       });
       //while(temp!=10){}
       console.log("outside")}
    });
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="myCtrl">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
</html>

在这段代码中,我只想在 inside 打印之后打印 outside,这意味着除非我收到响应,否则我想让循环等待,然后进行第二个循环,为此我定义了一个变量 temp 并且我正在运行一个循环直到它的值变为 10,但是即使在获得响应(如此评论)并将 temp 值设置为 10 之后它也会进入无限循环。 请帮忙

最佳答案

您可以先将 promise 保存在变量中,然后在 promise 成功后在控制台外执行。这将确保只有在内部 promise 解决后才会打印外部。

var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope, $http) {
    for(var i=0;i<2;i++){
       //var temp;
       var  q=$http.get("https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js")
      .then(function(response) {
          console.log("inside");
         temp=10;
       });
       q.then(function(res){
         while(temp!=10){}
         console.log("outside")
       })
       }
    });
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="myCtrl">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
</html>

如果你想把代码抽象成不同的函数,然后递归调用它,可以使用下面fiddle的想法。

工作 fiddle :http://jsfiddle.net/rmu6wuo8/1/

关于javascript - Angular 异步调用没有按预期结束 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45294346/

相关文章:

javascript - 如果项目被删除,如何将计数器减回 0

javascript - knockout : find out which observable triggerred computed

javascript - 将参数传递给 Vue 函数

javascript - jquery float图表不会动态更新时间序列的X轴值

angularjs - 对确认弹出窗口进行单元测试 Ionic 框架 Karma

angularjs - 过滤后从列表中删除项目

angularjs - 在模式中使用 ionic Tabs 指令

javascript - ACE Editor 如何将光标移动到行尾?

javascript - 在 angularjs ng-change ="chk(query)"中,当输入单词后点击空格时调用函数

javascript - AngularJS ngRepeat 语法错误