1

配列内の値を削除した後に関数を実行するにはどうすればよいですか?

私のコードでは、次のようなものがあります。

self.pictures.remove(this);

アイテムを正しく削除しますが、後で関数を実行する必要があり、コールバックを受け入れません...

これは私がやりたいことですが、不可能です...:

self.pictures.remove(this, function() {
    alert('Item removed');
});
4

5 に答える 5

4
self.pictures.remove(this);
alert('Item removed');

通常、配列からの要素の削除は非同期ではないため、コールバックは必要ありません。2 つの行が順番に実行されます。

于 2013-07-09T07:26:09.857 に答える
2

Array.remove は同期的です。つまり、メソッドが返された後、項目が削除されます。

selv.pictures.remove(this);
alert('Item removed');
// do other stuff...
于 2013-07-09T07:26:49.473 に答える
2

remove() 関数は同期操作であるため、ここでコールバックを使用する必要はありません。

いつ完了するかわからないため、非同期操作を処理するときにコールバックの必要性が生じます

self.pictures.remove(this);
alert('Item removed');
于 2013-07-09T07:26:23.757 に答える
0

.remove()JavaScript 配列にはネイティブメソッドがありません。これを Chrome コンソールの空白ページ (つまり、テストしているページではない) に入力します。

[].remove()

それは印刷します:

TypeError: Object [object Array] has no method 'remove'

したがって、.remove()呼び出しているメソッドが何であれ、それはページ内の JavaScript コードによって定義されたものです。

そのコードが何であるかを知らなければ、あなたの質問に対する答えを知る方法はありません。.remove()メソッドは同期的ですか? 非同期ですか?それは何をするためのものか?コードを見て確認する必要があります。

これを行う簡単な方法はdebugger;、呼び出しの直前にステートメントを配置.remove()し、Chrome 開発者ツールを開いた状態でページをロード/実行することです。デバッガーに割り込むと、.remove()メソッドにステップインして、実際の動作を確認できます。縮小されて読みにくいコードにステップインする場合は{}、下部にあるボタンを使用してコードをきれいに印刷します。

または、この.remove()メソッドがライブラリからのものである場合は、そのライブラリのドキュメントを確認してください。

さらに言えば、あなたself.picturesは実際のものですか、それともArray独自の.remove()メソッドを提供する他のオブジェクトタイプですか?

メソッド.remove()は通常の同期関数である可能性がありますが、ページ内の実際のコードまたはその関数のドキュメントを見るまではわかりません。

于 2013-07-09T07:43:04.423 に答える