Нужно ли оборачивать синхронную функцию в setTimeout, если нужно вернуть promise?

Нужно ли оборачивать синхронную функцию в setTimeout, если нужно вернуть promise?
return new Promise((resolve, reject) => {
  setTimeout(() => {
    let data = syncFoo()
    resolve(data)
  }, 0)
})
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
Если вы делает запрос к серверу, то это асинхронный процесс, если вы ожидаете ввод пользователя - это асинхронный процесс. А при помощи setTimeout вы по сути имитируете какой-либо процесс, то есть после того как прошло 20 секунд, должно, что-то произойти. Поэтому всегда вставлять его не нужно, главное, чтобы внутри Promise была асинхронная операция, которая после завершения вызовет resolve или reject. Допустим вы загружаете изображения с другого сервака на свой и после того, как будут получены данные, вы вызываете resolve, а если оборвалось, то reject. Никакой setTimeout в данном случае не нужен. А если функция синхронная, тогда да, setTimeout нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
HoHsi
@HoHsi
Если вы выполняете функцию без сайд-эффекта (это не запрос к базе / API / тому, что может не ответить), то вообще можете вернуть
return Promise.resolve(data);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы