передача данных из 1 потока в 2 разных потока в зависимости от данных - PullRequest
0 голосов
/ 28 мая 2019

У меня есть 1 поток с поступающими данными, который имеет префикс 2 разных префиксов. скажем, 1 и 0. Я хочу, чтобы все данные с префиксом 1 передавались по конвейеру только в поток А, а 0 - в поток Б.

Я подумал только об использовании 2 преобразований, которые пропускают данные, только если они имеют правильный префикс. Мне было просто интересно, есть ли более элегантный способ сделать это.

//an idea

//transformA is a transform that only pushes data that is prefixed with 1
//transformB is a transformt hat only pushes data that is prefixed with 2
incomingStream.pipe(transformA).pipe(destinationA)
incomingStream.pipe(transformB).pipe(destinationB)

1 Ответ

0 голосов
/ 31 мая 2019

Используйте for-await и if, может быть?

for await (const chunk of incomingStream) {
    if(chunk.startsWith("1")) {
        destinationA.write(transformA(chunk));
        continue;
    }

    if(chunk.startsWith("2")) {
        destinationB.write(transformB(chunk));
        continue;
    }

    destinationElse.write(chunk);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...