doka-guide / content

Контент Доки: статьи, картинки, демки и документация для авторов
https://doka.guide
Other
1.2k stars 630 forks source link

Неточность в примере кода про промисы #5520

Open msuny-c opened 3 weeks ago

msuny-c commented 3 weeks ago

Ссылка на статью

https://doka.guide/js/promise/

Описание

Первый пример из статьи:

const promise = new Promise(function (resolve, reject) {
  const data = getData() // делаем асинхронную операцию: запрос в БД, API, etc.
  resolve(data) // переводим промис в состояние fulfilled. Результатом выполнения будет объект data
})

Здесь getData() - асинхронная функция, то есть возвращает Promise. И результатом выполнения будет не объект data, а результат промиса data. Поэтому во избежания путаницы предлагаю рассказать, что такое thenable, что будет если передать промис в resolve и изменить комментарий.

Пруфы

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#chained_promises

alexeyten commented 3 weeks ago

Хм, если getData возвращает промиз, то зачем тут вообще городить огород.

Если всё же это асинхронная функция с колбеком, то так и надо написать и никакого const data не будет.

msuny-c commented 3 weeks ago

Хм, если getData возвращает промиз, то зачем тут вообще городить огород.

Если всё же это асинхронная функция с колбеком, то так и надо написать и никакого const data не будет.

@alexeyten Ну если не возвращает промис, то значит функция синхронная, и точно так же зачем городить огород если все это синхронно выполнится. А в качестве колбека ничего не передается. Возможно стоит в качестве примера все же функцию с колбеком привести

alexeyten commented 3 weeks ago

Ну смысл получить промис вместо синхронной ответа иногда есть. Но конечно проще Promise.resolve(getData()) написать.

HellSquirrel commented 1 week ago

Я согласна что пример не очень точный. Автор тут хотел сказать "Как-то откуда-то получили данные". Этот пример не надо читать построчно.

Давайте переделаем на что-то поинтереснее. Варианты