AngularJS承诺等待结果

时间:2018-12-07 14:37:56

标签: javascript angularjs

在我的angularjs应用中,单击按钮时,我有以下代码:

 if (!$scope.isChecked) {
    $scope.getExistingName($scope.userName).then(function (data) {  
        $scope.userName = data;    
    });
  }

  //some processing code here then another promise  

 myService.save($scope.userName,otherparams).then(function (res) {
       //route to page
    }, function (err) {
 });

这里的问题是,如果$ scope.isChecked为false,它将进入promise,并且由于花费时间来解决它,因此它进入了下一行代码。因此,$ scope.userName不会更新,并使用旧值代替返回的更新值。

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

如果myService.save需要等待$ scope.getExistingName承诺,只需在“ then”语句中计算该操作即可。

while chosen != True:

答案 1 :(得分:1)

您可以使用$q。首先,您必须在角度控制器中注入$q

 //Create empty promise
 var promise;

 if (!$scope.isChecked) {
   promise = $scope.getExistingName($scope.userName).then(function (data) {  
        $scope.userName = data;    
    });
  }

 // Wait or not for your promise result, depending if promise is undefined or not.
 $q.all([promise]).then(function () {

  //some processing code here then another promise  

  myService.save($scope.userName,otherparams).then(function (res) {
        //route to page
     }, function (err) {
  });
});