我正在使用Ember fixtures来构建我的应用程序原型,并且我想在第一次请求模型来模拟ajax请求时添加延迟。这可能吗?
答案 0 :(得分:6)
好问题。 FixtureAdapter
具有内置的确切功能,您需要配置的属性称为latency
。试试这个:
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter.create({ latency: 5000 });
});
这将向FixtureAdapter
添加5000毫秒(5秒)的延迟,等待它返回数据前5秒。
尽管@ Daniel的回答也是一种有效的方法,但是使用这个内置功能会让你的模型挂钩不受影响,当你在某个时候切换到不同的适配器时根本不需要任何努力,也没有必要删除模拟承诺,使代码更清晰。
希望它有所帮助。
答案 1 :(得分:4)
在你的模型钩子中返回一个在短暂延迟后解决的承诺。
model: function(params, transition){
return new Ember.RSVP.Promise(function(resolve){
setTimeout(function(){
var model = App.Model.find(params.id);
resolve(model);
}, 3000); // 3 second delay, wooh, your server is slow!!!
});
}