Я могу асинхронно разрешить связку promises с Promise.all(array)
. Однако .then()
будет запускаться только после того, как все эти promises будут разрешены. Как я могу выполнять действия при разрешении promises?
Например, я хочу асинхронно загружать все абзацы из статьи с помощью Promise.all()
. Таким образом, сеть сразу запрашивает весь огонь. Если в пункте 1 выполняется загрузка, я хочу, чтобы она отображалась на странице, но только если она будет загружена до пункта 2, тогда я хочу загрузить пункт 2. Если абзац 3 сделан, загрузка и 2 нет, я хочу, чтобы 3 дождался 2 перед рендерингом на страницу. И так далее.
Я пробовал что-то вроде этого, но я не знаю, что делать дальше:
var getStuff = function(number, time){
return new Promise(function(resolve, reject){
window.setTimeout(function(){resolve(`${number} - Done.`)}, time);
});
};
Promise.all([ getStuff(1, 200),
getStuff(2, 100),
getStuff(3, 250),
getStuff(4, 200),
getStuff(5, 300),
getStuff(6, 250),
getStuff(7, 5000)])
.then(function(data){
console.log(data);
});
Как я могу заставить консольный журнал данных происходить один за другим - не разрешая каждое обещание с помощью then()
перед тем, как сделать следующий запрос? Есть ли лучший способ сделать это?