У меня есть веб-приложение, которое использует JavaScript, jQuery и async.times
(среди других компонентов), чтобы получить список исполнителей и песен из API Spotify и вставить их на страницу по порядку. На моем локальном сервере Node.js эта функция работает отлично. Однако при развертывании в Heroku, похоже, произошла ошибка, связанная с асинхронной функцией, потому что она дважды запускает цикл и дважды добавляет список.
Это код, который добавляет данные на страницу:
var counter = 0;
for (var id in relatedArtists) {
relatedArtists[counter] = relatedArtists[id];
delete relatedArtists[id];
counter++;
}
async.times(counter, function(n, next) {
console.log(n);
console.log(relatedArtists[n].id);
s.getArtistTopTracks(relatedArtists[n].id, "US", function (err, data2) {
relatedArtists[n].song = data2.tracks[0].name;
relatedArtists[n].uri = data2.tracks[0].uri;
$('#related-artist').append(
'<p><strong>' + relatedArtists[n].name + '</strong> -- \"' +
relatedArtists[n].song + '\"</p>'
);
next(null, relatedArtists[n].uri);
});
},
Развернутая версия находится здесь: http://whatshouldilistentotoday.herokuapp.com/finalproject/.
Heroku говорит, что это не должно быть проблемой с их стороны, потому что они используют ванильную установку Node.js на Ubuntu, но я не могу понять, почему async.times
запускается нужное количество раз локально, а не на их сервере.
relatedArtists
? Это массив или объект? - person Bergi   schedule 16.12.2015