У меня есть веб-приложение, которое использует JavaScript, jQuery и async.times
(среди других компонентов), чтобы получить список исполнителей и песен из Spotify API и вставьте их на страницу по порядку. На моем локальном сервере Node.js эта функциональность работает отлично. Тем не менее, при развертывании в Heroku, кажется, есть ошибка, связанная с асинхронной функцией, потому что она, похоже, дважды запускает цикл и добавляет список два раза.Ошибка Async.times при развертывании приложения 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 говорит, что это не должно быть проблемой, с их стороны, потому что они используйте установку void Node.js на ubuntu, но я не могу понять, почему async.times
будет запускать определенное количество раз локально, но не на своем сервере.
Возможно, вам понадобится добавить больше источника. Например, как устанавливается счетчик? – Gary
@Gary Я редактировал сообщение, чтобы указать, как устанавливается счетчик. –
Ты делаешь странные вещи. Где инициализируется 'relatedArtists'? Является ли это массивом или объектом? – Bergi