2

在我的代码的一行中,我有类似的内容:

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

但是像往常一样它会阻止我的浏览器。我必须等到真正运行下一行代码。我不想阻止我的浏览器和其他功能应该可以工作,因为(其他一些触发的事件会改变轮到我的情况)用户应该继续他所做的一切。

这是为了在轮到我之前刷新图形。

4

3 回答 3

7

你应该这样做:

$scope.$watch("isMyTurn(privilege)",function(val){
    if(val){
       //I will run next line of codes
    }
});

而不是您尝试做的事情。请注意,在这种情况下,privilege也应该是一个scope变量,例如

$scope.privilege

如果您不希望它成为scope变量,请不要将其作为参数传递。但直接在函数内部访问它..

希望这可以帮助..

于 2013-02-15T12:00:38.787 回答
5

考虑使用 $scope.$watch 函数。

查看($watch): http ://docs.angularjs.org/api/ng.$ro​​otScope.Scope

于 2013-02-15T08:32:08.107 回答
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);
于 2013-02-15T08:31:54.927 回答