Однажды мальчик по имени Обещание решил отправиться в путешествие по одному из знаменитых миров в своей реальности. Несмотря на то, что у Promise было много решимости внутри себя, было очень тяжело решиться покинуть родное место и отправиться в сторону Bluebird. Однако он взял все, что могло понадобиться ему в пути, и отправился в путь.

Цель Promise заключалась в том, чтобы научиться новым техникам у жителей Bluebird. Он всегда хотел быть лучшим в своем деле. Во время прогулки он наслаждался прекрасным видом скал на своем пути.

Так что в конце концов Promise добрался до мира Bluebird, и первым, с кем он столкнулся, был парень по имени Map.

- Эй, ты кто такой ?

- Я карта, а ты?

- Я обещаю из города узла. Я еду сюда, чтобы узнать больше о ваших техниках. Не могли бы вы помочь мне ?

- Конечно ! У каждого в Bluebird есть свои функции. Мы хотели выполнять асинхронные задания и помогать нашим пользователям писать чистый код. Так что, если хотите, я могу объяснить, для чего я был создан.

- Будет здорово!

- Я аналог функции Array.map (), но для асинхронных задач. Я могу взять параметр параллелизма и вернуть обещание, которое будет выполнено, когда все задачи будут выполнены. Мой код короче, и я полезен, особенно когда пользователям нужно ограничить количество параллельных задач.

Освоив все приемы Карты, Промис поблагодарил его и продолжил свой путь. Пройдя немного, он увидел старика, который сидел у огня и читал книгу.

- Добрый день, сэр ! Я Обещаю, и я ищу знания. Я хочу изучить все известные вам техники.

- Добрый день, сын мой. Я вижу, вам интересна моя функциональность. Хорошо, я помогу тебе. Меня зовут Each. Я работаю с Iterables. В вашем городе узла есть функция под названием Array.forEach (). Я его аналог.

- Ох, я так рада познакомиться с тобой. Не могли бы вы объяснить поподробнее?

- Итак, я беру итеративный параметр и перебираю его, как встроенную функцию Array.forEach (). Я также беру параметр обратного вызова, который может быть асинхронной функцией или любой функцией, возвращающей обещание. Я не выполняю все задачи сразу, а делаю задачу за задачей. Другими словами, я делаю одно дело в единицу времени. Поскольку вы не можете выполнять асинхронную работу внутри встроенной функции Array.forEach (), вы можете переключиться на меня для этой цели.

Обещание поблагодарил каждого и продолжил свой путь. Через некоторое время он увидел девушку, которая фотографировала бабочек. Это была молодая девушка со светлыми волосами.

- Эй, мисс, могу я узнать, зачем вы были созданы? Какая у вас функциональность?

- Кто ты ?

- Я обещаю из города узла. Я путешествую по вашему миру, чтобы больше узнать о ваших техниках.

- Я Некоторые. Я беру массив обещаний в качестве первого параметра, а параметр count - в качестве второго. Я возвращаю обещание, которое будет выполнено, как только будут выполнены обещания count из данного массива обещаний.

Например, если вы дадите мне список с 10 обещаниями и 3 в качестве параметра подсчета, я верну вам обещание, которое будет выполнено, как только будут выполнены 3 обещания из вашего списка. В результате я возвращаю массив, содержащий результаты выполненных обещаний.

Promise поблагодарил некоторых и продолжил движение к другим функциям. Вдалеке он увидел полицейскую машину с яркими мигалками. Это его заинтересовало, и он решил пойти посмотреть, какие функции есть у полицейского.

- Могу я увидеть ваши документы, сэр?

- Да, пожалуйста ! А, вот и ты.

- Так вы из города Узел… Что вы здесь делаете?

- Я еду сюда. Я хочу узнать все о мире Bluebird. Я уже встречался с Map, Each, Some и теперь хочу узнать, в чем ваша функциональность?

- Хм, меня зовут Задержка. Я беру два параметра и возвращаю обещание. Мой первый параметр - миллисекунды. Второй - значение, но необязательно. Поэтому, если вы хотите иметь обещание, которое будет выполнено по истечении нужного вам времени и с желаемым значением, просто позвоните мне, указав миллисекунды и желаемое значение в качестве параметров.

- Спасибо ! Это просто, но полезно!

Выполнив все обещания, Задержка отпустила Обещания. Обещание продолжило свои исследования и встретило больше жителей Синей птицы. Когда уже стемнело, Промис почувствовал себя очень усталым и захотел вернуться в свой город узлов. Через некоторое время он понял, что заблудился и не может его найти. Постепенно он начал паниковать и в конце концов понял, что ничего не может сделать. Он сел на камень и заплакал.

- Почему ты плачешь ?

Вдруг он услышал голос. Он поднял голову, но никого не увидел.

- Кто это ?

- Почему ты плачешь ? Послушай, я на тебя сверху!

- Обещ поднял голову и увидел чудесную синюю птицу. Он был рад найти хоть кого-нибудь, кто мог бы помочь ему найти свой путь.

- Какая ты чудесная птица! Как Вас зовут ?

- Я Promisify, а вы кто?

- Я обещаю из города узла, я заблудился

- Не беспокойся, я тебе помогу. Просто следуй за мной. Я полечу к твоему городу.

- Прохладный ! Я так рада познакомиться с тобой, добрая птичка. Я пойду за вами, но не могли бы вы рассказать мне, как вы используете во время полета? Какая у вас функциональность?

- Хорошо, следуй за мной, я расскажу тебе все обо мне попутно. Так что, если вы из города узла, вероятно, вы знаете об обратных вызовах. Как вы думаете, какой из них лучше обратный вызов или обещание?

- Обещает точно! Используя обещания, мы можем писать более чистый код.

- Верно ! Таким образом, я могу преобразовать функции обратного вызова в функции возврата обещаний. Я оборачиваю их, и когда вызывается обратный вызов, я разрешаю возвращенное обещание.

- А как же результаты и ошибки?

- Обычно первый аргумент обратного вызова - это ошибка, а второй - результат. Поэтому я выполняю обещания на основе этих параметров. А вот и твой город! Надеюсь, вы многому научитесь во время этого путешествия. Теперь я должен покинуть тебя. Идите домой и подумайте обо всем, что вы узнали. Обещаю удачи!