AngularJs或JavaScript等待某些条件

时间:2013-02-15 08:28:38

标签: javascript angularjs

在我的代码的一行中,我有类似的东西:

...
while(!$scope.isMyTurn(privilege)){}
I will run next line of codes

然而像往常一样它会阻止我的浏览器。我必须等到真的运行下一行代码。我不想阻止我的浏览器和其他功能应该工作,因为(其他一些被激活的事件将改变轮到我的情况)用户应该继续他做的任何事情。

这是为了刷新图形,直到轮到我。

3 个答案:

答案 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);