【发布时间】:2018-01-25 17:42:11
【问题描述】:
我在 angularJS 应用程序中有这样的功能
function Validate() {
var inputs = $scope.getInput;
var defer = $q.defer();
var promises = [];
_.each(inputs, function(input) {
promises.push(loadInformation(input)
.then(function(inputList) {
repository.calculation(inputList, input);
if (inputList) {
return true;
}
else {
return false;
}
}));
});
$q.all(promises).then(function() {
for (var i = 0; i < promises.length; i++) {
if (!promises[i]) {
defer.reject();
}
}
defer.resolve(); // after it loops get the answer
});
return defer.promise;
}
function handleAction(event) {
if (Validate().value) {
alert('show success');
}
else {
alert('show failue');
}
alert('this is being hit before callback finishes');
}
我在 handleAction(event) 中开始执行,它启动了 Validate() 异步函数。它通过它并且基本上什么都不做,然后它执行handleAction(event)的其余部分并发出警报
'这是在回调完成之前被击中'
然后在它到达函数的末尾之前,它会返回到异步调用并完成执行。
2 个问题:
我的承诺正确吗?
另外如何让 alert('show success') 或 alert('show failure') 等到调用完全完成并返回结果?
【问题讨论】:
标签: javascript angularjs asynchronous promise