какой тут должен правильный ход рассуждений. Если не получится, тогда буду оформлять на codepen. Есть вынесенная в отдельный файл логика подгрузки апи сделанная как export const getData = ()=>{fetch url.then(r=>r.rjson())} В основном файле я getData импортирую. Далее я сначала написала по аналогии с криптономиконом через коллбек, т.е. в основном файле вызвала getData c аргументом в виде коллбека. Так работало. Но т.к. это было сделано просто по примеру, то когда надо было после этого еще надобавлять методов, получилось некрасиво и труднорасширяемо. Получила фидбек, что надо через async/await. Пишу в основном файле async function(){const res = await getData(); await console.log(res)}. Но console.log срабатывает раньше (проверила, вставив в апи метод свой console.log) и еще показывается подсветка предупреждения, что await в такой конструкции не имеет смысла. В какую сторону правильнее что-то менять?
Просто консоль лог рес сделай, без эвейта
console.log и так без эвейта, ошиблась. Подсветка, что эвейт не имеет смысла, вот в этой строчке - let response = await getData(url) - т.е. вызов импортированного метода
console.log(await res)
Нет, так тоже не сработало. Подсветка, что await не имеет эффекта, исчезла после того, как я в файле апи тоже добавила слово async - export const getData = async ()=>{} Но Все равно не помогло.
Ну конечно не сработает) Сложно что-то советовать по словам, по коду было бы понятнее
ок, попробую оформить)
можешь скрин кода кинуть?
если я не ошибаюсь, то функция getData ничего не возвращает
почему? У нее же console.log показывает данные, и return присутствует
перед fetch куегкт ye;ty
return нужен*
так лучше здесь использовать асинк эфвейт и возвращать респонсе
return response возвращает его внутри колбека then, а сама getData ничего не возвращает (undefined) а так как она асинхронная, то этот андефайнед оборачивается в промис, который сразу же резолвится
return у тебя внутри коллбека. А нужно как бы return fetch().then().catch()
все получилось, спасибо огромнейше!!!!
тоже спасибо!!!
Есть скриншот и сразу видна проблема) Если используешь разный синтаксис легко запутаться.
Срочно вам чего-то промисообъясняющего внутривенно!)
Спасибо, обращу!) Делала типа первую самостоятельную работу по ТЗ, и такая думала - ну я же вообще правильно сделала - и апи файл вынесла, и всякие парадигмы поприменяла, и можно прям как свою визитную карточку показывать. А мне прислали фидбек из 12 пунктов, и сразу стало понятно, какой я еще новичок)
и не забывайте про то, что при использовании async await все ошибки вываливаются наружу и их нужно отлавливать через try catch и обрабатывать например, только используется axios вместо fetch export default class SomeApi extends BaseApi { async get () { try { return (await this.axios.get('/api/v1/about')).data } catch (e) { throw apiErrorHandle(e) } } async update (about) { try { return (await this.axios.put('/api/v1/about', { about: about })).data } catch (e) { throw apiErrorHandle(e) } } }
ага, поняла, спасибо большое!
Обсуждают сегодня