AngularJS で $timeout を使用してパラメータ付き関数を実行するにはどうすればよいでしょうか? 質問する

AngularJS で $timeout を使用してパラメータ付き関数を実行するにはどうすればよいでしょうか? 質問する

この関数は AngularJS コントローラー内に存在します。次のようになります。

polling_interval=1000;
var poll = function() 
{
  //Execution code
  $timeout(poll, polling_interval); 
}; 
poll();

AngularJS のサービスを使用して、$timeout自分自身を呼び出し続けます。このポーリング関数にパラメーターを追加するまでは、これが機能します。追加されたパラメーターのコードは次のようになります。

polling_interval=1000;
var poll = function(param1, param2) 
{
  //Execution code
  $timeout(poll(param1, param2), polling_interval); 
}; 
poll(param1, param2);

構文が受け入れられず、困惑しています。AngularJS を使用してパラメータ付きの関数を実行するにはどうすればよいでしょうか$timeout? これができない場合、この問題を回避する方法はありますか? 投票関数でパラメータを受け入れるようにしたいと思います。

ベストアンサー1

$timeout は、Angular の window.setTimeout のラッパーです。当然、setTimeout と同様に、タイムアウト fn に追加のパラメータを渡すこともサポートしています。

AngularJS API から:

$timeout([fn], [delay], [invokeApply], [Pass]);

[注釈](機能)あなたの機能である
[遅れ](数値) 遅延(ミリ秒)
[適用を呼び出す](ブール値) デフォルトは true です。true の場合、fn は $apply 内で実行され、false の場合はモデルのダーティ チェックがスキップされます。
[合格]追加のパラメータ!これがあなたが望んでいるものです!

コードは次のようになります:

polling_interval = 1000;
var poll = function(param1, param2){
    //Execution code
    $timeout(poll, polling_interval, true, param1, param2); 
}; 
poll(param1, param2);

これは、タイムアウトした fn にパラメータを渡す適切な方法です。これが役に立つことを願っています。

編集: この機能は 2015 年 1 月 22 日 (v1.4.1) に追加されました。それより前のバージョンでは、正しいアプローチは次のようになります。

polling_interval = 1000;
var poll = function(param1, param2){
    //Execution code
    $timeout(poll.bind(null, param1, param2), polling_interval); 
}; 
poll(param1, param2);

おすすめ記事