169 похожих чатов

Всем привет! Постараюсь на словах описать проблему, потому что интересно,

какой тут должен правильный ход рассуждений. Если не получится, тогда буду оформлять на 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 в такой конструкции не имеет смысла. В какую сторону правильнее что-то менять?

23 ответов

32 просмотра

Просто консоль лог рес сделай, без эвейта

Tatiana-Fomicheva Автор вопроса

console.log и так без эвейта, ошиблась. Подсветка, что эвейт не имеет смысла, вот в этой строчке - let response = await getData(url) - т.е. вызов импортированного метода

console.log(await res)

Tatiana-Fomicheva Автор вопроса

Нет, так тоже не сработало. Подсветка, что await не имеет эффекта, исчезла после того, как я в файле апи тоже добавила слово async - export const getData = async ()=>{} Но Все равно не помогло.

Ну конечно не сработает) Сложно что-то советовать по словам, по коду было бы понятнее

Tatiana-Fomicheva Автор вопроса

ок, попробую оформить)

можешь скрин кода кинуть?

Tatiana-Fomicheva Автор вопроса
Tatiana-Fomicheva Автор вопроса

если я не ошибаюсь, то функция getData ничего не возвращает

Tatiana-Fomicheva Автор вопроса

почему? У нее же console.log показывает данные, и return присутствует

перед fetch куегкт ye;ty

return нужен*

так лучше здесь использовать асинк эфвейт и возвращать респонсе

return response возвращает его внутри колбека then, а сама getData ничего не возвращает (undefined) а так как она асинхронная, то этот андефайнед оборачивается в промис, который сразу же резолвится

return у тебя внутри коллбека. А нужно как бы return fetch().then().catch()

Tatiana-Fomicheva Автор вопроса

все получилось, спасибо огромнейше!!!!

Tatiana-Fomicheva Автор вопроса

тоже спасибо!!!

Есть скриншот и сразу видна проблема) Если используешь разный синтаксис легко запутаться.

Срочно вам чего-то промисообъясняющего внутривенно!)

Tatiana-Fomicheva Автор вопроса

Спасибо, обращу!) Делала типа первую самостоятельную работу по ТЗ, и такая думала - ну я же вообще правильно сделала - и апи файл вынесла, и всякие парадигмы поприменяла, и можно прям как свою визитную карточку показывать. А мне прислали фидбек из 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) } } }

Tatiana-Fomicheva Автор вопроса

ага, поняла, спасибо большое!

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта