我正在检查来自 Backbone JQuery 移动示例应用程序 http://jquerymobile.com/test/docs/pages/backbone-require.html的代码
并在集合对象中找到以下内容
// 覆盖 Backbone.sync 方法(Backbone.fetch 方法在尝试获取数据时调用 sync 方法)
同步:函数(方法、模型、选项){
// 局部变量
// ===============
// 实例化一个空数组
var 类别 = [],
// 将 this 上下文存储在 self 变量中
自我=这个,
// 创建一个 jQuery 延迟对象
延迟 = $.Deferred();
// 使用 setTimeout 模拟一个异步检索数据的真实世界应用程序
设置超时(函数(){
// 过滤上述示例 JSON 数据以返回仅包含正确类别类型的数组
类别= _.filter(self.jsonArray,函数(行){
返回 row.category === self.type;
});
// 调用 options.success 方法并传递一个对象数组(内部将这些对象作为模型保存到当前集合中)
options.success(类别);
// 触发自定义的 `adding` 方法(Category View 监听)
self.trigger("添加");
// 解析延迟对象(这会触发类别路由器内部的 changePage 方法)
deferred.resolve();
}, 1000);
// 返回延迟对象
延期退货;
}
我只是想了解 deferred 被声明和返回的部分,为什么我们甚至需要那个?没有附加回调。而且我真的不明白为什么我们使用 setTimeout 并在其中解析延迟对象。