Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJs或JavaScript等待某些条件_Javascript_Angularjs - Fatal编程技术网

AngularJs或JavaScript等待某些条件

AngularJs或JavaScript等待某些条件,javascript,angularjs,Javascript,Angularjs,在我的代码的一行,我有这样的东西: ... while(!$scope.isMyTurn(privilege)){} I will run next line of codes 然而,像往常一样,它阻止了我的浏览器。我必须等到实现后才能运行下一行代码。我不想阻止我的浏览器和其他功能,因为(其他一些触发事件将改变轮到我的情况)用户应该继续他所做的任何事情 这是为了在轮到我之前刷新图形。我不知道angularJS,但在普通JavaScript中,您可以使用setTimeout function w

在我的代码的一行,我有这样的东西:

...
while(!$scope.isMyTurn(privilege)){}
I will run next line of codes
然而,像往常一样,它阻止了我的浏览器。我必须等到实现后才能运行下一行代码。我不想阻止我的浏览器和其他功能,因为(其他一些触发事件将改变轮到我的情况)用户应该继续他所做的任何事情


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

我不知道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);

考虑使用$scope.$watch函数

在($watch)下查看:

您应该这样做:

$scope.$watch("isMyTurn(privilege)",function(val){
    if(val){
       //I will run next line of codes
    }
});
而不是你想做的。。 请注意,在此场景中,
privilege
也应该是一个
scope
变量,类似于

$scope.privilege
如果不希望它是一个
范围
变量,就不要将其作为参数传递。但是直接在函数内部访问它


希望这有帮助。

有任何答案有用吗?@ShaiRez我已经用经典Javascript方法解决了问题,但我希望用$watch实现它。我已经用经典Javascript方法解决了问题,但最好用Angular Js内置的功能来实现。你能解释一下val变量以及我如何改变频率来检查下一个观察时间吗?privilege不是一个作用域变量,但它是一个已定义的变量,但是我没有定义它?作用域的正确语法。$watch是$scope。$watch(“isMyTurn(privilege)”,函数(newVal,oldVal){if(newVal!==未定义){//在这里做你的事…});我相信你已经知道angular可以用于脏检查。。因此,当watch表达式的值更改时,angular调用回调函数,为您提供该表达式的新值和旧值。。这个函数被调用的次数是不能保证的,所以你不应该依赖它..我使用$scope.$watch并且不工作?我不能直接使用privilege变量,因为该函数将在另一个js文件中使用它。你能创建一个小提琴来重现你的问题吗?那么,解决它并向您展示已解决的问题就会容易得多。。