为ember fixture数据添加延迟以模拟ajax

时间:2013-08-07 00:22:51

标签: ember.js ember-data

我正在使用Ember fixtures来构建我的应用程序原型,并且我想在第一次请求模型来模拟ajax请求时添加延迟。这可能吗?

2 个答案:

答案 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!!!
    });
 }