私はあなたが何をしているのか理解できません...
同期の代わりに次のメソッドを使用します。
model.fetch();
model.save();
model.destroy();
彼らは同期を呼び出し、完全に機能します。
元の同期をオーバーライドする必要はないと思います。それで十分です。サンプル アプリケーションのモック同期を作成しました。これがどのように機能するかを示します。
var User = Backbone.Model.extend({
notAllowedEmailHost: "gmail.com",
sync: function (method, model, options) {
if (method == "read" || method == "delete")
throw new Error("Example is not prepared for these methods.");
var email = model.get("email");
var status = 201;
if (email.indexOf(this.notAllowedEmailHost) != -1)
status = 400;
else if (method == "update")
status = 500;
options.xhr = {
status: status
};
if (status >= 400)
options.error(options.xhr);
else
options.success({
id: 1
});
}
});
上記のメソッドはコールバックの周りにラッパー関数を作成し、同期してそれらのラッパーが結果で呼び出されます。したがって、同期中のコールバックは、フェッチ、保存、または破棄関数の呼び出しによって提供されるコールバックではありません...