Skip to content

Instantly share code, notes, and snippets.

@kaareal
Created May 23, 2011 14:06
Show Gist options
  • Save kaareal/986743 to your computer and use it in GitHub Desktop.
Save kaareal/986743 to your computer and use it in GitHub Desktop.
promise vs seq
RealtimeSync.prototype._storeDirectMessage = function(message, user, callback) {
var messageDate = new Date(Date.parse(message.created_at)),
b = user.user_id, privateMsg;
if(!user.dm_latest_d) {
user.dm_latest_d = new Date(0);
}
if(messageDate < user.dm_latest_d) {
return;
}
var promises = [],
msgSavedDef = new promise.Def();
promises.push(msgSavedDef);
db.PrivateMessage.findOne({ b: b, i: message.id_str }, function(err, t){
if(!t) {
t = new db.PrivateMessage();
t.b = b;
t.createFromJSON(message);
t.save(function () {
msgSavedDef.resolve(t.toPublicObject())
});
}
});
if(messageDate > user.dm_latest_d) {
var userSavedDef = new promise.Def();
promises.push(userSavedDef);
user.dm_latest_d = messageDate;
user.dm_latest_id = message.id_str;
user.save(function() {
userSavedDef = new promise.Def();
})
}
promise.all(promises).then(function(d) {
if(d[0]) {
callback(d[0])
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment