An easy way to let Backbone work with Promises in Titanium:
Get the bluebird Promise library.
Now you can add a fetchAsPromise to the Backbone.Model.Prototype and Backbone.Collection.prototype objects:
Backbone.Model.prototype.fetchAsPromise = function(options) {
var me = this;
return new Promise(function(resolve, reject) {
options.success = resolve;
options.error = reject;
me.fetch(options);
});
};
The same can be done for the save method:
Backbone.Model.prototype.saveAsPromise = function(props) {
var me = this;
return new Promise(function(resolve, reject) {
me.save(props, {
success : resolve,
error : reject
});
});
};
Now you can do:
var user;
Alloy.createModel("User").fetchAsPromise({
id : 12
}).then(function(bbUser) {
user = bbUser;
return Alloy.createCollection("Orders").fetchAsPromise({
query : "select * from Orders where user_id = " + user.get("id")
});
}).then(function(orders) {
// Now we have user and orders...
});