Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 September 12

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
И ты его либо ждёшь, либо складываешь в массив и через Promise all потом
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
А мое решение почему не работает? Я значит в цикле создаю массив промисов и затем их всех разрешаю, после чего разрешаю внешний промис.
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
код методов size и read я не могу редактировать, только с функциями передаваемые в коллбеки этих методов, я могу работать. Или ты о чем то другом?
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
func test
return new Promise
    input.read(func {
      resolve(something)
    })

for () {
  await test()
}
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Неудобно с телефона
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
ок
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
И уже внутри цикла вызывайте свою функцию и уже async await
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
ну точнее не ок, пока не очень понятно.
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Дописал немного
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
спс, попробую
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Твой вариант сработал! Спасибо за помощь! Вот так у меня получилось:

  const array = [];

 function pushElem(i) {
   return new Promise(function (resolve, reject) {
     input.read(i, (file) => {
       array.push(file);
       resolve();
     });
   });
 }

 let promise = new Promise(function (resolve, reject) {
   input.size(async (size) => {
     for (let i = 0; i < size; i++) {
       await pushElem(i);
     }
     resolve();
   });
 });

 promise.then((array) => {
   console.log(array);
 });
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Ну в целом, да, норм
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Вот думаю, чтобы такое по асинхронности поизучать. Вот простые случаи я понимаю, ну или когда сам код пишу, а вот чужой код порой нет ☹️
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Есть классный цикл книг "Вы не знаете JS". И там есть одна про асинхронность
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
ок, попробую прочитать, спс. А алгоритмы ты хорошо знаешь?
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Ну я давно не решал задачки, но более менее
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
Я вижу, что ты в московской группе метархии, ты там как кто? Ученик или учитель?
источник

AK

Alexandr Kazakov in NodeUA - JavaScript and Node.js in Ukraine
на каком языке кстати лучше эти книги читать? Оригинал или русский подойдет?
источник

KH

Kirill Hmelnitski in NodeUA - JavaScript and Node.js in Ukraine
Если в стриме есть backpressure у pipe, будет ли он работать при чтении стрима через асинхронный итератор (for await), если внутри итерации тоже есть асинхронщина? В некоторых библиотеках read стрим фигачит и не ждёт разрешения промисов внутри цикла.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Если читаем через for await, то все работает так же, как и pipe или .on, это работает через тот же механизм, но с контрактом асинхронного итератора
источник