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文件中使用它。你能创建一个小提琴来重现你的问题吗?那么,解决它并向您展示已解决的问题就会容易得多。。