JSFiddle - React, Tailwind, and code Playground
JavaScript
function getUserDashboardData(db, userId, callback) {
// non-blocking calls
getUserFromDatabase(db, userId, function(err, user) {
if (err) return callback(err, undefined);
getUserFriends(db, user, function(err, friends) {
if (err) return callback(err, undefined);
getUserDiscussions(db, user, function(err, discussions) {
if (err) return callback(err, undefined);
getUserFriendRecommendations(db,
user,
friends,
function(err, friendRecommendations) {
if (err) return callback(err, undefined);
getUserInterestingDiscussions(db,
discussions,
function(err, interestingDiscussions) {
if (err) return callback(err, undefined);
var data = {
user: user,
friends: friends,
discussions: discussions,
friendRecommendations: friendRecommendations,
interestingDiscussions: interestingDiscussions
};
callback(null, data);
});
});
});
});
});
}
function getUserFromDatabase(db, userId, callback) {
db.read('users', 'id = ?', userId, callback);
}
function getUserFriends(db, user, callback) {
db.read('friends', 'user_id = ?', user.id, callback);
}
function getUserDiscussions(db, user, callback) {
db.read('discussions', 'user_id = ?', user.id, callback);
}
function getUserFriendRecommendations(db, user, friends, callback) {
var friendIds = _.pluck(friends, 'id');
db.read('friend_recommendations', 'user_id = ? and friend_id in ?',
user.id,
friendIds,
callback);
}
function...