在我的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不会更新,并使用旧值代替返回的更新值。
处理此问题的最佳方法是什么?
答案 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) {
});
});