Size: a a a

2020 November 02

p

persona x grata in JS Liberty
Denis Efremov
Функцию sleep из скрина выше, невозможно написать с помощью async/await
потому что надо создать объект промис, в который обернут таймаут
источник

DE

Denis Efremov in JS Liberty
persona x grata
потому что надо создать объект промис, в который обернут таймаут
Нет
источник

DE

Denis Efremov in JS Liberty
Потому что async не может сделать возврат из вложенной функции
источник

p

persona x grata in JS Liberty
Denis Efremov
А можно юзать await и .catch() из промиса
у меня так
источник

p

persona x grata in JS Liberty
const api = 'https://jsonplaceholder.typicode.com/todos/1'

const getData = async api => {
 const res = await (await fetch(api)).json()
   console.log(res)
}


getData(api).catch(e => console.log(e))
источник

p

persona x grata in JS Liberty
Denis Efremov
А можно юзать await и .catch() из промиса
покажи как ты делаешь
источник

DE

Denis Efremov in JS Liberty
persona x grata
покажи как ты делаешь
Посмотри на ГХ например у шахматного бота
источник

AK

Aleksei Kowalski in JS Liberty
persona x grata
const api = 'https://jsonplaceholder.typicode.com/todos/1'

const getData = async api => {
 const res = await (await fetch(api)).json()
   console.log(res)
}


getData(api).catch(e => console.log(e))
Зачем два await?
источник

DE

Denis Efremov in JS Liberty
Aleksei Kowalski
Зачем два await?
Чтобы на верочку
источник

W

Wembley in JS Liberty
Denis Efremov
Чтобы на верочку
Тогдп три надо)
источник

DE

Denis Efremov in JS Liberty
persona x grata
const api = 'https://jsonplaceholder.typicode.com/todos/1'

const getData = async api => {
 const res = await (await fetch(api)).json()
   console.log(res)
}


getData(api).catch(e => console.log(e))
У тебя тут непойманная ошибка
источник

AK

Aleksei Kowalski in JS Liberty
Еще не видел такого
источник

DE

Denis Efremov in JS Liberty
Ты её вручную выше отлавливаешь чем надо
источник

Е

Евдоким in JS Liberty
Aleksei Kowalski
Зачем два await?
Он там вызывает метод json у того, что вернет промис, но его сначала нужно дождаться, по этому он обернут в скобки и перед ним await. А второй await нужен, чтобы дождаться выполнения выражения promis+вызов метода json, тут принцип как с несколькими вложенными асинхронными функциями - ждем внизу, ждем вверху. Хз как нормально объяснить.

Вообще лучше так не делать, некрасиво выглядит.
источник

Е

Евдоким in JS Liberty
Хотя может я и неправильно прочитал его код. Но вон то, что я вверху описал я когда то видел.
источник

DE

Denis Efremov in JS Liberty
const res = await fetch(api)
const json = await res.json()
источник

Е

Евдоким in JS Liberty
А .json() тоже возвращает промис?
источник

DE

Denis Efremov in JS Liberty
Евдоким
А .json() тоже возвращает промис?
Ты же сам только что это написал
источник

Е

Евдоким in JS Liberty
Denis Efremov
Ты же сам только что это написал
Нет.
источник

DE

Denis Efremov in JS Liberty
А второй await нужен, чтобы дождаться выполнения выражения promis+вызов метода json
источник