我需要知道,当function1中的$ timeout完成时。怎么知道,当超时完成工作?
$scope.function1 = function (array, file_id) {
for (var i = 0; i < array.length; i++){
if (array[i].file_id == file_id){
$timeout(function () {
array.splice(i, 1);
// when finish?
}, 2000);
break;
}
}
return array;
}
$scope.function1($rootScope.parcelQeue, response[0]);
getOutboxParcelFactory.getParcel(response).then(function(infoObj){
// do something if the timeout in function1 is finished
});
&#13;
答案 0 :(得分:0)
您可以简单地添加一个标志来检查$timeout
内的函数是否运行:
var timerRun = false;
$scope.function1 = function (array, file_id) {
timerRun = false;
for (var i = 0; i < array.length; i++){
if (array[i].file_id == file_id){
$timeout(function () {
array.splice(i, 1);
// when finish?
timerRun = true;
}, 2000);
break;
}
}
return array;
}
$scope.function1($rootScope.parcelQeue, response[0]);
getOutboxParcelFactory.getParcel(response).then(function(infoObj){
// do something if the timeout in function1 is finished
if (timerRun) {
doSomething();
} else {
console.log("I am not doing anything, and will not do in the future because the timeout in function1 is not finished.");
}
});
这不是一个优雅的解决方案,但我认为它解决了你的问题。
但是,如果您不想仅检查而等待完成$timeout
,那么您需要采用不同的方法。