Однажды мальчик по имени Обещание решил отправиться в путешествие по одному из знаменитых миров в своей реальности. Несмотря на то, что у 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, а вы кто?
- Я обещаю из города узла, я заблудился
- Не беспокойся, я тебе помогу. Просто следуй за мной. Я полечу к твоему городу.
- Прохладный ! Я так рада познакомиться с тобой, добрая птичка. Я пойду за вами, но не могли бы вы рассказать мне, как вы используете во время полета? Какая у вас функциональность?
- Хорошо, следуй за мной, я расскажу тебе все обо мне попутно. Так что, если вы из города узла, вероятно, вы знаете об обратных вызовах. Как вы думаете, какой из них лучше обратный вызов или обещание?
- Обещает точно! Используя обещания, мы можем писать более чистый код.
- Верно ! Таким образом, я могу преобразовать функции обратного вызова в функции возврата обещаний. Я оборачиваю их, и когда вызывается обратный вызов, я разрешаю возвращенное обещание.
- А как же результаты и ошибки?
- Обычно первый аргумент обратного вызова - это ошибка, а второй - результат. Поэтому я выполняю обещания на основе этих параметров. А вот и твой город! Надеюсь, вы многому научитесь во время этого путешествия. Теперь я должен покинуть тебя. Идите домой и подумайте обо всем, что вы узнали. Обещаю удачи!