私はSockJSでwebsocketイベントをリッスンしていて、受信したオブジェクトを配列の$scope.mails.items
に挿入したいとします。私は以下のコードスニペットを持っています。私の問題は何らかの理由でmessage
を遅延機能に渡すことができないことです。私は知っている...私はこの問題に関するいくつかの説明を繰り返して尋ねたが、この特定のケースではうまくいかない理由を理解できなかった。私がこれを遅らせる必要がある理由は、それが私の見解に適用されることを確認したいのですが、そうでなければそうしないということです。
MyService.receive().then(null, null, function(message) {
$timeout(function(m) {
if($scope.mails.items.indexOf(m) == -1) {
$scope.mails.items.push(m);
}
}, 0, true, message);
});
それをデバッグするとき、私はmessage
変数が適切な値を持っていますが、それは私の遅れ関数の途中で停止することになると、m
がデータを取得していない、しかし私は$timeout
がそれを渡すことを期待することがわかりますダウン。
助けてもらえますか?
'$ timeout'関数の中に' console.log(arguments) 'を記録することができます。おそらく最初の議論ではなく、おそらく 'm' –
になるはずです。 '$ timeout(function(m){...} .bind(message))'のように、代わりに 'bind'を試してみましたか?(カスタムトリックの代わりにもっと慣用的なJS) Btw、答えが示唆しているように 'm'の代わりに' message'をここで直接使うことはできません。 – estus