2013-06-14 2 views
0

(Js новичка здесь)крюка в .then метода обещание

Я перегрузил 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, чтобы я мог показать json d ata, возвращенный вызовом ajax, но без вмешательства в работу 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); 
    }, 

Я хотел бы видеть в консоли всех ответов JSon прошли через метод .then. Как я могу «зацепить» обещание?

ответ

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

Для регистрации всех .ajax() ответов, делать то, что говорит @LukeMelia.

Чтобы войти в ответ на конкретный MyApp.Adapter.ajax() вызов, попробуйте:

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