バックボーン JQuery モバイル サンプル アプリ http://jquerymobile.com/test/docs/pages/backbone-require.htmlのコードをチェックしていました。
コレクションオブジェクト内に次のものが見つかりました
// Backbone.sync メソッドをオーバーライドします (Backbone.fetch メソッドは、データを取得しようとするときに sync メソッドを呼び出します)
sync: function( メソッド、モデル、オプション ) {
// ローカル変数
// ===============
// 空の配列をインスタンス化します
var カテゴリ = [],
// this コンテキストを self 変数に格納します
自分=これ、
// jQuery Deferred オブジェクトを作成します
deferred = $.Deferred();
// setTimeout を使用して、非同期でデータを取得する実際のアプリケーションを模倣します
setTimeout( 関数() {
// 上記のサンプル JSON データをフィルタリングして、正しいカテゴリ タイプのみの配列を返します
カテゴリ = _.filter( self.jsonArray, function( 行 ) {
row.category === self.type を返します。
} );
// options.success メソッドを呼び出し、オブジェクトの配列を渡します (これらのオブジェクトをモデルとして現在のコレクションに内部的に保存します)
options.success(カテゴリ);
// カスタムの `added` メソッドをトリガーします (カテゴリ ビューがリッスンします)
self.trigger( "追加" );
// 遅延オブジェクトを解決します (これにより、カテゴリ ルーター内の changePage メソッドがトリガーされます)
deferred.resolve();
}、1000);
// 遅延オブジェクトを返します
延期されたリターン;
}
deferred が宣言されて返される部分を理解したいのですが、なぜそれが必要なのですか? コールバックは関連付けられていません。また、setTimeout を使用して遅延オブジェクトを内部で解決する理由もよくわかりません。