2

私のコードの1行に、次のようなものがあります。

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

しかしいつものようにそれは私のブラウザをブロックします。次のコード行を実行するには、trueになるまで待たなければなりません。ブラウザをブロックしたくないので、他の機能が機能するはずです。(他の発生したイベントのいくつかは私の番の状況を変えるでしょう)ユーザーは何をするにしても続行する必要があります。

これは、私の番が来るまでグラフィックを更新するためのものです。

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 に答える