Skip to content

Instantly share code, notes, and snippets.

@rajivnarayana
Created February 29, 2016 12:35
Show Gist options
  • Save rajivnarayana/0cd220ef3803a428e866 to your computer and use it in GitHub Desktop.
Save rajivnarayana/0cd220ef3803a428e866 to your computer and use it in GitHub Desktop.
Callbacks vs promises
var driverDetailsPromise = Driver.findWithPromises({_id:req.params.id}).then(function(drivers){
return drivers[0];
})
var OPEN_STATUS = "open";
var Driver = require('../models/driver');
var Request = require('../models/request');
Driver.find({name : 'rajiv'}, function(error, drivers) {
if (error) {
response.status(500).send(error);
}
var firstDriver = drivers[0];
Request.find({driver_id : firstDriver._id}, function(error, requests) {
if (error) {
response.status(500).send(error);
}
var firstRequest = requests[0];
Request.findByIdAndUpdate(firstRequest._id, {$set:{status:OPEN_STATUS}}, function(error, updatedRequest) {
if (error) {
response.status(500).send(error);
}
response.status(200).send(updatedRequest);
})
});
});
Driver.findWithPromises({name : 'rajiv'}).then(function(drivers) {
return drivers[0];
}).then(function(firstDriver){
return Request.findWithPromises({driver_id : firstDriver._id});
}).then(function(error, requests) {
return requests[0];
}).then(function(firstRequest) {
return Request.findByIdAndUpdateWithPromises(firstRequest._id, {$set:{status:OPEN_STATUS}});
}).then(function(updatedRequest) {
response.status(200).send(updatedRequest);
}).catch(function(error){
response.status(500, error);
});
var driverDetailsPromise = Driver.findWithPromises({_id:req.params.id}).then(function(drivers){
return drivers[0];
})
var tripsByDriverPromise = Request.findWithPromises({driver_id:req.params.id});
Promise.all([driverDetailsPromise, tripsByDriverPromise]).then(function(results){
var firstDriverDetails = results[0];
var tripsByDriver = results[1];
response.status(200).send({'details': firstDriverDetails, 'trips' : tripsByDriver});
});
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("Hello World")
}, 2000);
});
promise.then(function(text) {
console.log(text);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment