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 ответов

26 просмотров

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

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 Автор вопроса

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта