陷入承诺的.then方法

时间:2013-06-14 13:20:23

标签: javascript ember.js promise

(这里是新手)

我重载了RESTAdapter

/*
  The default RESTAdapter in the application.

  An instance of this object will be created automatically.
*/

MyApp.Adapter = DS.RESTAdapter.extend({
    ajax: function(url, type, hash) {
        var ajax_reply = this._super(url, type, hash);
        console.log('ajax_reply (promise) -> '); console.log(ajax_reply);
        return ajax_reply;
    }
});

现在我得到了我在控制台中可以看到的promise

promise

我想要挂钩.then方法,这样我就可以显示ajax调用返回的json数据,但不会干扰RESTAdapter的工作。例如,RESTAdapter.find方法是:

  find: function(store, type, id) {
    var root = this.rootForType(type), adapter = this;

    return this.ajax(this.buildURL(root, id), "GET").
      then(function(json){
        adapter.didFindRecord(store, type, json, id);
    }).then(null, DS.rejectionHandler);
  },

我想在控制台中看到通过.then方法传递的所有json回复。我如何“勾结”承诺?

2 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

MyApp.Adapter = DS.RESTAdapter.extend({
  ajax: function(url, type, hash) {
    var ajaxPromise = this._super(url, type, hash);
    ajaxPromise.then(function(json){
      console.log(json);
    });
    return ajaxPromise;
  }
});

答案 1 :(得分:1)

要记录所有.ajax()个回复,请执行@LukeMelia建议的内容。

要将响应记录到特定的MyApp.Adapter.ajax()来电,请尝试:

MyApp.Adapter.ajax(url, type, hash).then(function(json) {
    console.log(json);
}, function() {
    console.log('.ajax error');
});