Skip to content

Commit

Permalink
fix: уточнение по Promise в функции promiseFrame
Browse files Browse the repository at this point in the history
  • Loading branch information
Philipp Khromov committed Mar 25, 2024
1 parent c635851 commit e0b0714
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ const graph = {
2) `const result = await planEvent(() => 'Done', '3000'); // ошибка с кодом INVALID_ARGUMENT`

## 12. Ограничение на одновременное выполнение
Напишите функцию [promiseFrame](src/promiseFrame.ts). Функция принимает первым аргументом массив асинхронных функций, не принимающих аргументов и возвращающих некоторые результаты (не `void`), вторым необязательным аргументом — максимальное количество промисов, которое может выполняться одновременно. Согласно заданному лимиту на одновременное выполнение, функция параллельно обрабатывает переданные асинхронные функции и возвращает `Promise`, удовлетворяющийся с массивом результатов выполнения функций в порядке, в котором были переданы функции (но не в порядке их выполнения). В случае, если лимит на одновременное выполнение промисов не передан, ограничение накладываться не должно и функция должна вести себя аналогично [`Promise.all`](https://learn.javascript.ru/promise-api#promise-all). Если хотя бы одна асинхронная функция выкидывает ошибку, `promiseFrame` должен выбросить ту же ошибку и только её. Обратите внимание, что ограничение на количество одновременных выполнений не означает разделение функций на подмножества и порционное их выполнение: если имеются ещё не выполненные функции и лимит на одновременное их выполнение не исчерпан, следующая по порядку функция должна выполняться. Заметьте, что переданные функции могут быть и синхронными — в таком случае в результаты выполнения должен попасть просто результат вызова такой функции.
Напишите функцию [promiseFrame](src/promiseFrame.ts). Функция принимает первым аргументом массив асинхронных функций, не принимающих аргументов и возвращающих некоторые результаты (не `void`), вторым необязательным аргументом — максимальное количество промисов, которое может выполняться одновременно. Согласно заданному лимиту на одновременное выполнение, функция параллельно обрабатывает переданные асинхронные функции и возвращает `Promise`, удовлетворяющийся с массивом результатов выполнения функций в порядке, в котором были переданы функции (но не в порядке их выполнения). В случае, если лимит на одновременное выполнение промисов не передан, ограничение накладываться не должно и функция должна вести себя аналогично [`Promise.all`](https://learn.javascript.ru/promise-api#promise-all). Если хотя бы одна асинхронная функция выкидывает ошибку, `promiseFrame` должен выбросить ту же ошибку и только её. Обратите внимание, что ограничение на количество одновременных выполнений не означает разделение функций на подмножества и порционное их выполнение: если имеются ещё не выполненные функции и лимит на одновременное их выполнение не исчерпан, следующая по порядку функция должна выполняться. Заметьте, что переданные функции могут быть и синхронными — в таком случае в результаты выполнения должен попасть просто результат вызова такой функции, при этом из функции `promiseFrame` необходимо также вернуть `Promise`.

**Ошибки, которые должны быть обработаны:**
1) Первый аргумент не массив. Код ошибки `INVALID_ARGUMENT`.
Expand Down

0 comments on commit e0b0714

Please sign in to comment.