我有以下代码不起作用:
$scope.function_A();
$scope.function_B();
并且这可以工作:
$scope.function_A();
$timeout(function(){
$scope.function_B();
}),100;
这是因为function_B
引用了Angular尚未创建的指令。我相信这就是使用$timeout
解决问题的原因。
我的问题是:如何确保100 millisecond
超时正确且始终有效?以某种方式检测function_A
完成而不是使用$timeout
?
答案 0 :(得分:1)
使用回调机制
$scope.function_A(callback){
// your implementation
callback() // add it at the end
}
现在拨打function_B
function_A
$scope.function_A(function(){
$scope.function_B();
});
答案 1 :(得分:1)
你可以使用Promises。
如果你需要函数A来完成它的工作,那么在调用函数B之前,最好让它返回一个promise。一些角度服务具有已经返回Promise的方法,例如, $http.get
。通过使用$q
,您可以准备自己的承诺。例如:
$scope.function_A = function() {
//function code
return $q.when();
}
$scope.function_A().then(function() {
$scope.function_B();
});
详细了解$q
和Promises here