Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
nodejs:steams:promise.all_restrict [2022/05/15 12:07] werwolf |
nodejs:steams:promise.all_restrict [2023/01/12 12:18] (текущий) |
||
|---|---|---|---|
| Строка 24: | Строка 24: | ||
| - | ===== ОТВЕТЫ ===== | ||
| - | === Ответ 1 === | + | |
| + | ====es6-promise-pool==== | ||
| Обратите внимание, что ''Promise.all()'' не запускает promises, чтобы начать свою работу, создавая само обещание. | Обратите внимание, что ''Promise.all()'' не запускает promises, чтобы начать свою работу, создавая само обещание. | ||
| Строка 62: | Строка 62: | ||
| </code> | </code> | ||
| - | === Ответ 2 === | + | ====p-limit==== |
| **С-Концевой** | **С-Концевой** | ||
| Строка 108: | Строка 108: | ||
| Результат журнала консоли - это массив данных ответа ваших разрешенных обещаний. | Результат журнала консоли - это массив данных ответа ваших разрешенных обещаний. | ||
| - | === Ответ 3 === | + | ====bluebird==== |
| [[http://bluebirdjs.com/docs/api/promise.map.html|Bluebird Promise.map]] может использовать параметр параллелизма, чтобы контролировать, сколько обещаний должно выполняться параллельно. Иногда это проще, чем ''.all'' потому что вам не нужно создавать массив обещаний. | [[http://bluebirdjs.com/docs/api/promise.map.html|Bluebird Promise.map]] может использовать параметр параллелизма, чтобы контролировать, сколько обещаний должно выполняться параллельно. Иногда это проще, чем ''.all'' потому что вам не нужно создавать массив обещаний. | ||
| Строка 128: | Строка 128: | ||
| </code> | </code> | ||
| - | === Ответ 4 === | + | ====http.Agent({maxSockets: 5})==== |
| Вместо использования обещаний для ограничения http-запросов используйте встроенный узел [[https://nodejs.org/api/http.html#http_agent_maxsockets%23http_agent_maxsockets|http.Agent.maxSockets]]. Это устраняет необходимость использования библиотеки или написания собственного кода пула и дает дополнительное преимущество, позволяющее лучше контролировать то, что вы ограничиваете. | Вместо использования обещаний для ограничения http-запросов используйте встроенный узел [[https://nodejs.org/api/http.html#http_agent_maxsockets%23http_agent_maxsockets|http.Agent.maxSockets]]. Это устраняет необходимость использования библиотеки или написания собственного кода пула и дает дополнительное преимущество, позволяющее лучше контролировать то, что вы ограничиваете. | ||
| Строка 145: | Строка 145: | ||
| Если вы делаете несколько запросов к одному и тому же источнику, вам также может быть полезно установить для ''keepAlive'' значение true (дополнительную информацию см. В документации выше). | Если вы делаете несколько запросов к одному и тому же источнику, вам также может быть полезно установить для ''keepAlive'' значение true (дополнительную информацию см. В документации выше). | ||
| - | === Ответ 5 === | + | ====iterator==== |
| Если вы знаете, как работают итераторы и как они используются, вам не понадобится дополнительная библиотека, так как создать собственный параллелизм очень просто. Позвольте мне продемонстрировать: | Если вы знаете, как работают итераторы и как они используются, вам не понадобится дополнительная библиотека, так как создать собственный параллелизм очень просто. Позвольте мне продемонстрировать: | ||
| Строка 168: | Строка 168: | ||
| </code> | </code> | ||
| - | === Ответ 6 === | + | ====p-limit MongoDB==== |
| Вот основной пример для потоковой передачи и "p-limit". Это потоковое чтение HTTP потока в Монго БД. | Вот основной пример для потоковой передачи и "p-limit". Это потоковое чтение HTTP потока в Монго БД. | ||
| Строка 214: | Строка 214: | ||
| </code> | </code> | ||
| - | === Ответ 7 === | + | ====рекурсия==== |
| Это может быть решено с помощью рекурсии. | Это может быть решено с помощью рекурсии. | ||
| Строка 258: | Строка 258: | ||
| </code> | </code> | ||
| - | === Ответ 8 === | + | ====batch-promises==== |
| Поэтому я попытался заставить некоторые показанные примеры работать для моего кода, но так как это было только для сценария импорта, а не для производственного кода, использование [[https://www.npmjs.com/package/batch-promises|пакетных обещаний]] пакета npm, несомненно, было для меня самым простым путем | Поэтому я попытался заставить некоторые показанные примеры работать для моего кода, но так как это было только для сценария импорта, а не для производственного кода, использование [[https://www.npmjs.com/package/batch-promises|пакетных обещаний]] пакета npm, несомненно, было для меня самым простым путем | ||
| Строка 296: | Строка 296: | ||
| </code> | </code> | ||
| - | === Ответ 9 === | + | ====Promise.race==== |
| Это то, что я сделал с помощью ''Promise.race'', внутри моего кода здесь | Это то, что я сделал с помощью ''Promise.race'', внутри моего кода здесь | ||
| Строка 317: | Строка 317: | ||
| Если вы хотите увидеть пример: [[https://jsfiddle.net/thecodermarcelo/av2tp83o/5|https://jsfiddle.net/thecodermarcelo/av2tp83o/5/]] | Если вы хотите увидеть пример: [[https://jsfiddle.net/thecodermarcelo/av2tp83o/5|https://jsfiddle.net/thecodermarcelo/av2tp83o/5/]] | ||
| - | === Ответ 10 === | + | ====рекурсия с внешними библиотеками==== |
| Рекурсия - это ответ, если вы не хотите использовать внешние библиотеки | Рекурсия - это ответ, если вы не хотите использовать внешние библиотеки | ||
| Строка 339: | Строка 339: | ||
| </code> | </code> | ||
| - | === Ответ 11 === | + | ====async-pool==== |
| Я предлагаю библиотеку async-pool: [[https://github.com/rxaviers/async-pool|https://github.com/rxaviers/async-pool]] | Я предлагаю библиотеку async-pool: [[https://github.com/rxaviers/async-pool|https://github.com/rxaviers/async-pool]] | ||
| Строка 349: | Строка 349: | ||
| > npm установить крошечный-асинхронный пул | > npm установить крошечный-асинхронный пул | ||
| - | === Ответ 12 === | + | ====async/await==== |
| Это становится относительно тривиально с async/await, в зависимости от того, что вы хотите, это хорошо переносится на карту с задержкой или forEach, вот реализация карты. | Это становится относительно тривиально с async/await, в зависимости от того, что вы хотите, это хорошо переносится на карту с задержкой или forEach, вот реализация карты. | ||