Oleh
Я новичок в react, перешёл с angular. В angular есть такая штука как сервисы, но react, я так понимаю, используется с redux. В redux есть reducer'ы и action creator'и. Но они не отвечают моим требованиям. Например мне надо загрузить данные о пользователе, то первый раз я загружаю его с сервера и сохраняю в store. Что мне делать, если я хочу опять его данные, но не хочу загружать с сервера опять. Что-то типа: if(store.getState().user) не подходит. Надо что-то как сервисы: userService.getUser() А загружать данные о пользователе или использовать сохраненные уже должен решать сам сервис. Есть ли какой-то способ сделать такое?
Павел
по твоему совету так и сделал - не работает, косячишь ты
Ещё раз тот же вопрос, когда в таком случае выполняется update? Вставь console.log до update и внутри него в начале, запусти и скинь сюда порядок выводов
᠌
твои оправдания?
Anonymous
код выполняется асинхронно, то есть пока обрабатывается `try`, в это же время выполняется и `this.update`, мне нужно сделать так, чтобы `this.update` вызывался только после успешного выполнения try
Во первых, зачем ты оборачиваешь все это в try/catch? Внутри твоего вызова rp должен вызывать reject если что то пойдет не так и ты это сможешь перехватить в .catch. Если this.update нужно вызывать после успешного асинхронного вызова rp то его нужно поместить внутрь .then.
Павел
Ну, update выполнилось в then. В чем проблема?
🌀 through a haze 🌀
"Message sent!" и "Sticker sent!" вызываются в this.update? тогда все работает как надо
᠌
Ну, update выполнилось в then. В чем проблема?
значит твой совет не от светлого ума?
᠌
они вызываются в другом методе
᠌
который вызван внутри this.update
Павел
значит твой совет не от светлого ума?
Ты вообще понимаешь что ты делаешь?..
🌀 through a haze 🌀
т.е. который вызывается в this.update ?
🌀 through a haze 🌀
и я про то, что try...catch здесь абсолютно не нужен, он не поймает асинхронный вызов он сможет только отловить ошибку в вызове rp, до начала асинхронного кода
🌀 through a haze 🌀
покажи то, что у тебя сейчас
Павел
Ты сказал, что тебе нужно, чтобы update выполнялся только после того как выполнится try. Для твоего говнокода единственное место, где можно отловить успешное окончание try - это конец then. Ты поместил туда update, по выводу в консоль выходит, что все работает верно. Какие вопросы?
Anonymous
убрал try catch, поместил this.update в .then, работает также как и до этого
Что именно не так? .catch не срабатывает? Покажи что происходит в rp и как ты создаешь промис?
᠌
беззубов какой-то агрессивный скрипткидди, что он тут делает?
🌀 through a haze 🌀
а this.update у тебя случайно не асинхронный?
🌀 through a haze 🌀
то, что внутри него
Павел
а this.update у тебя случайно не асинхронный?
А какая разница, у в консоль в правильном порядке выводится все, не знаю в чем тогда проблема
᠌
this.update асинхронный метод и метод, который внутри него вызвал тоже асинхронный
᠌
в этом проблема?
🌀 through a haze 🌀
ну дааа
᠌
я добавлял перед вызовом rp await
᠌
это не должно было его останавливать?
Ramiz
Здравствуйте. кто нибудь работал с PDF? есть PDF с 79 сраницами, и там есть поля. надо чтобы клиент заполнял форму на сайте, а потом с данными из этих форм заполнять PDF и сохранить с новым именем
🌀 through a haze 🌀
у тебя выводится "До this.update" потом выполняется this.update, который запускает асинхронный код потом выводится в консоль "После this.update" а потом заканчивает выполнение асинхронный код из this.update
Anonymous
У тебя try выполняется синхроно. А код в Promise.then асинхроно. Соотвественно код внутри try еще не выполнится a finally уже отработает.
᠌
try я уже убрал
🌀 through a haze 🌀
я добавлял перед вызовом rp await
для этого он должен быть обернут в async function
᠌
так и есть
🌀 through a haze 🌀
тебе надо бы чтобы this.update возвращал промис, тогда к нему ты тоже сможешь прицепить then, но мне кажется что тут надо что-то менять я же не знаю что именно ты хочешь получить и какая у тебя там будет цепочка
🌀 through a haze 🌀
у меня мало опыта с async await, но разве надо его совмещать с промисами?
᠌
я писал код по коду другого кодера и там он использовал await у промиса
🌀 through a haze 🌀
ну, в общем-то, с твоей проблемой мы разобрались - код выполняется теперь надо только расставить все в нужной последовательности
Павел
Это вообще должно быть цепочкой промисов и update для этого тоже должен его возвращать, тогда всё по порядку будет
🌀 through a haze 🌀
ну тогда ты вообще не знал куда this.update вставлять, а теперь мы разобрались, что у тебя кругом асинхронные вызовы и then на самом деле работает так, как надо
🌀 through a haze 🌀
просто надо выстроить все в цепочку промисов
᠌
понял, async и await вообще во всех методах убирать?
᠌
там их 3 всего
᠌
update, getHistory и sendMessage
🌀 through a haze 🌀
если ты не знаешь, как правильно их использовать и как они работают, то проще будет заменить их на промисы
🌀 through a haze 🌀
@undefinedusername у тебя должно получиться что-то вроде этого: rp(getHistory) .then(response => { ... return this.update(); ... }) .then(response => { ... return this.sendMessage(); ... }) .then(response => { ... }) .catch();
᠌
а ну вот только что ее и сделал
᠌
цепочка промисов
᠌
ща
᠌
Анатолий
> pro.js > осваиваем промисы
᠌
конфа про js, осваиваем тему по жс
᠌
лол
᠌
будто бы что-то противоречивое
Dika
конфа про js, осваиваем тему по жс
эта конфа для жс профи
᠌
нигде этого не написано
Dika
нигде этого не написано
в описании группы написано
᠌
в списке конференций телеграма в гугле написано, что это просто конфа посвященная помощи по жс
Павел
Весомо
᠌
узнав, что это для профи, я удивлен, почему здесь сидят такие как павел, например
Павел
Да всем насрать
᠌
На то, что ты скрипт кидди и ошибся конфой?
᠌
да, на тебя да
Nikita
если у тебя новый браузер зачем тебе тащить ненужные префиксы, для левых браузеров темболее?
Анатолий
в списке конференций телеграма в гугле написано, что это просто конфа посвященная помощи по жс
Но нигде не написано, что это конфа для таких обиженок, как ты. Уйди в чат для нубов и не выпендривайся на других участников
Анатолий
Хамить тут можно только сове :)
Шемиль
Может забанем его?
Anonymous
Round 2
Anonymous
Fight
Eugene
еее
Шемиль
Жаль я не админ
Eugene
интернет воинов завезли
Eugene
возвращайтесь на двач
Павел
Этого клоуна уже банили. Или в другом чате, или в этом и он просто под другим акком зашёл