Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Backbone Marionette.js reqres framework doesn't wait for collection to get populated

I'm using Backbone.Marionette's request-response framework to fetch data in collection and then response it to the request object that request it, but obviously it doesn't wait for collection to get populated. And here is my code:

This is where it is requesting the data:

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

and here is where i set my handler:

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

and here is my API's function:

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;
    }
}
like image 816
fre2ak Avatar asked Feb 03 '26 09:02

fre2ak


1 Answers

Use a promise to pass the results back:

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
});
like image 94
Creynders Avatar answered Feb 04 '26 21:02

Creynders



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!