在我的代码的一行中,我有类似的东西:
...
while(!$scope.isMyTurn(privilege)){}
I will run next line of codes
然而像往常一样它会阻止我的浏览器。我必须等到真的运行下一行代码。我不想阻止我的浏览器和其他功能应该工作,因为(其他一些被激活的事件将改变轮到我的情况)用户应该继续他做的任何事情。
这是为了刷新图形,直到轮到我。
答案 0 :(得分:7)
你应该这样做:
$scope.$watch("isMyTurn(privilege)",function(val){
if(val){
//I will run next line of codes
}
});
而不是你想要做的事情..
请注意,在这种情况下,privilege
也应该是scope
变量,如
$scope.privilege
如果您不希望它成为scope
变量,请不要将其作为参数传递。但是直接在函数内部访问..
希望这会有所帮助..
答案 1 :(得分:5)
考虑使用$ scope。$ watch函数。
看下($ watch): http://docs.angularjs.org/api/ng.$rootScope.Scope
答案 2 :(得分:1)
我不了解angularJS,但在普通的JavaScript中你可以使用setTimeout
function whenReady()
{
if ($scope.isMyTurn(privilege)){
I will run next line of codes
}
else
{
window.setTimeout(whenReady, 1000);
}
}
window.setTimeout(whenReady, 1000);