3

我使用Backbone.Marionette的請求 - 響應框架來獲取集合中的數據,然後將它響應請求對象的請求,但顯然它doesn不要等待收集才能滿足。這裏是我的代碼:骨幹Marionette.js reqres框架不會等待收集填充

這是它被請求數據:

// Module: Timeline, ListController 
var employees = App.request('employee:timeline'); 

這裏是我把我的處理程序:

// Entities Module 
App.reqres.setHandler('employee:timeline', function() { 
    return API.getEmployeesForTimeline(); 
}); 

,這裏是我的API函數:

getEmployeesForTimeline: function() { 
    var employees = new Entities.EmployeeCollection(); 

    employees.fetch({ 
     success: function(employees) { 
      returnEmployees(employees); 
     } 
    }); 

    function returnEmployees(employees) { 
     // doing some things with employees collection 
     return leaves; 
    } 
} 

回答

8

使用承諾將結果傳遞回去:

getEmployeesForTimeline: function() { 
    var employees = new Entities.EmployeeCollection(); 
    var deferred = $.Deferred(); 
    employees.fetch({ 
     success: deferred.resolve 
    }); 

    return deferred.promise(); 
} 

// Entities Module: UNCHANGED 
App.reqres.setHandler('employee:timeline', function() { 
    return API.getEmployeesForTimeline(); 
}); 

//request data 
var promise = App.request('employee:timeline'); 
promise.done(function(employees){ 
    //use employees 
}); 
+0

只是想出了同樣的方式!謝謝! :)完美的作品。 – fre2ak