Содержание этой статьи очень подходит для новичков в Javascript. Он будет описан простым и понятным языком, поэтому вам не придется беспокоиться, что вы его не поймете.
Обещание — незаменимый элемент знаний при изучении современного языка Javascript. Многие люди испытывают растерянность, читая это. Основную причину можно сформулировать в одном предложении:
Код больше не выполняется сверху вниз.
Обычно код, который мы пишем, выполняется последовательно, например, мы пишем код, который считает от 1 до 3.
console.log(1) console.log(2) console.log(3)
Нажмите F12, чтобы открыть консоль нашего браузера, скопируйте в нее приведенный выше код, нажмите Enter, и вы увидите, что цифры от 1 до 3 распечатаны по порядку.
1 2 3
Теперь, если у нас есть требование, чтобы порядок кодов не мог быть изменен, но порядок окончательных распечаток должен быть независим от порядка кодов, можем ли мы это сделать?
Представим, что если 1, 2 и 3 напечатают три человека соответственно, то это будет очень просто. Нам просто нужно указать им задачу одновременной печати чисел, и порядок распечаток будет зависеть только от времени выполнения задач.
Итак, как нам поручить задачу печати трем людям? Здесь используется Promise. Создавая новый объект Promise, мы можем назначить часть кода новому «процессу» вместо его выполнения в текущем «процессе». Обратите внимание, что «процесс» здесь — это не то же самое, что процесс операционной системы, о котором мы часто говорим, а просто абстрактное понятие, представляющее виртуальную единицу, которая выполняет код последовательно.
Как мы только что сказали, Promise можно рассматривать как новый «процесс», поэтому, если мы хотим, чтобы он выполнил какой-либо код, мы можем обернуть его в функцию и передать ему. Таким образом, код не будет выполнен немедленно.
Promise также предоставляет нам две функции: одну — разрешить, а другую — отклонить, которые мы можем вызывать, когда задача завершена и не выполнена соответственно. Эти две функции передаются во внутреннюю часть Promise в качестве параметров. Итак, мы можем собрать его вот так:
Promise( (resolve, _reject) => { setTimeout(() => { console.log(1) resolve() }, 300) } )
Здесь мы используем setTimeout для имитации трудоемкой задачи. В реальных сценариях этой задачей может быть чтение файла, запрос сетевого интерфейса или ожидание ввода пользователя. Когда задача завершена, мы вызываем функциюsolvethe, чтобы указать, что задача завершена.
Затем мы следуем тому же методу, и Promise, когда мы собираем два других, нам нужно только предоставить им разные номера печати и время, необходимое для выполнения задачи. Наконец, полный код выглядит так: вы можете попробовать скопировать его в консоль и попробовать.
Promise( (resolve, _reject) => { setTimeout(() => { console.log(1) resolve() }, 300) } ) new Promise( (resolve, _reject) => { setTimeout(() => { console.log(2) resolve() }, 200) } ) new Promise( (resolve, _reject) => { setTimeout(() => { console.log(3) resolve() }, 100) } )
Наконец, порядок вывода чисел связан со временем выполнения задач:
3 2 1
Параллельное программирование — это способ имитировать выполнение большого количества задач одновременно на ограниченном количестве ядер ЦП. Promise в Javascript предоставляет удобный и быстрый способ параллельного программирования, а также набор спецификаций для обработки возвращаемых значений и значений ошибок. Поняв и ознакомившись с этой спецификацией, мы сможем значительно повысить эффективность обработки параллельных задач.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3