Nodejs Transform - можно ли считать обратный вызов перед push push хорошей практикой? - PullRequest
0 голосов
/ 28 августа 2018

Относительно функции преобразования потока. Преобразование:
Это нормально, что он не сломает что-то вроде механизма противодавления,
и предполагая, что меня не волнует порядок, вызвать callback () перед вызовом push (), чтобы я мог асинхронно обрабатывать более 1 чанка одновременно?

В частности, я хотел бы делать асинхронные HTTP-запросы. У меня есть «поток URL», и я хочу нажать () обработанные результаты для дальнейшей обработки / хранения.

Если я дождусь завершения запроса перед вызовом callback (), каждый раз будет выполняться только 1 запрос. Если, однако, я перезвоню, пока запрос в эфире:

request.get(url, (err, res) => push(process(res)));
return callback();

Я могу обрабатывать много запросов одновременно.

Код , кажется, работает, но мне интересно, если я неправильно использую поток. Преобразование и если я должен использовать что-то еще полностью для этого типа конвейера.

1 Ответ

0 голосов
/ 28 августа 2018

Это нарушает дизайн потоков.

Если вас не волнует обратное давление или порядок потока, не используйте поток. Предполагая, что ваш «поток URL» является просто читаемым потоком, используйте его напрямую и прекратите использование потока в этой точке. Вы также можете подумать, почему вы используете поток URL-адресов, но я не хочу судить слишком много.

Как пример:

urlStream.on('data', (url) => {
  request.get(url, (err, res) => {
    // do whatever you want to do next.
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...