Я могу асинхронно разрешить кучу обещаний с Promise.all(array)
. Однако .then()
будет работать только после того, как все эти обещания будут решены. Как я могу выполнять действия по мере того, как обещания решаются?Выполнение действий, поскольку обещания выполняются с использованием Promise.all()
Например, я хочу загрузить все абзацы из статьи асинхронно, используя 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()
перед тем как сделать следующий запрос? Есть лучший способ сделать это?
Некоторые библиотеки обещаний имеют * progress * callbacks. – alex
Невозможно получить это поведение с помощью родного es6? Без добавления другой библиотеки в мой проект? – hackrnaut
Почему не просто 'getStuff (...)' и 'then' render для каждого обещания? –