Skip to content

Instantly share code, notes, and snippets.

@mrcnc
Created November 20, 2014 16:30
Show Gist options
  • Save mrcnc/fdefdc79674e6e7da971 to your computer and use it in GitHub Desktop.
Save mrcnc/fdefdc79674e6e7da971 to your computer and use it in GitHub Desktop.
how do i make this work with async?
app.get('/savedTracks', function (req, res) {
var savedTracks = [];
// get users
User.find().limit(10).exec(function(err, users) {
var numberOfAsyncRequests = users.length;
// for each user, get their saved tracks and add to the array of savedTracks
users.forEach(function(user, callback) {
// refresh access tokens for the user
spotifyApi.setRefreshToken(user['refresh_token']);
spotifyApi.refreshAccessToken().then(function(data) {
// set the access token for this user
spotifyApi.setAccessToken(data['access_token']);
console.log('The access token has been refreshed!');
// now you can get the user's saved tracks
spotifyApi.getMySavedTracks({ limit: 10 }).then(function(data) {
// add tracks to list of savedTracks
savedTracks = savedTracks.concat(data['items']);
--numberOfAsyncRequests;
if(numberOfAsyncRequests === 0){
//savedTracks = savedTracks.map(function(track) { return track.track });
console.log('tracks', { items: savedTracks });
res.render('tracks', { items: savedTracks });
}
}, function(err) {
console.log('Could not get saved tracks', err);
});
}, function(err) {
console.log('Could not refresh access token', err);
});
});
// how do i wait until the requests for mySavedTracks have returned?
//console.log('tracks', savedTracks);
//res.render('tracks', savedTracks);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment