«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Является ли .then(function(a){ return a; }) недопустимым для промисов?

Является ли .then(function(a){ return a; }) недопустимым для промисов?

Опубликовано 16 ноября 2024 г.
Просматривать:193

Is .then(function(a){ return a; }) a No-Op for Promises?

Является ли .then(function(a){ return a; }) недопустимым для промисов?

В сфере промисов , возник вопрос о том, является ли .then(function(a){ return a; }) никакой операцией. Давайте прольем свет на этот любопытный запрос:

Да, обычно это пустая операция.

Рассматриваемый код получает возвращаемое значение предыдущего обещания в цепочку через функцию, переданную в .then(). Однако если эта функция просто возвращает входные данные a, она фактически обходит любую обработку или преобразование результата обещания. Это делает его безобидным, но ненужным дополнительным шагом в конвейере обещаний.

Почему это было написано именно так?

Вероятно, это опечатка или пережиток более ранних заблуждений о обещает. Когда были введены промисы, некоторые разработчики ошибочно полагали, что .then() необходимо вернуть обещание, чтобы продолжить цепочку. В результате они добавили этот лишний вызов .then(), чтобы гарантировать, что возвращаемое значение всегда останется обещанным, даже если оно идентично входному.

Разница между возвратом .then() и Пропуск

Хотя это семантически эквивалентно, существуют тонкие различия между возвратом .then() и пропуском it:

  • Новый экземпляр обещания: .then() создает новый экземпляр обещания, а его пропуск позволяет повторно использовать оригинал. Однако это различие обычно не имеет значения.
  • Проверка работоспособности: С помощью .then() возвращаемое значение проверяется, чтобы определить, является ли оно обещанием или нет. Если опустить .then(), эта проверка пропускается.

Краевые случаи

В редких ситуациях .then(function(a){ return a; }) может имеют необычное поведение:

  • Если возвращаемое значение внезапно становится обещанием после выполнения, .then() будет ожидать it.
  • Он возвращает отдельный объект обещания, который может быть полезен для предотвращения совместного использования. Однако это нишевый вариант использования.

Вывод

В общем, .then(function(a){ return a; }) — нет -op, который не добавляет никакой ценности в цепочку обещаний. Его следует опускать, если только нет веских причин для его использования, например, для предотвращения общих обещаний или обработки неясного поведения, связанного с thenable.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3