@vuejs_ru

Страница 1408 из 3900
DimenSi
28.09.2017
09:23:15
но такая фишка не работает

Dave
28.09.2017
09:39:09
Слушайте ребят

нормальная вообще практика

из экшена промис возвращать

Google
Dave
28.09.2017
09:39:32
а резолв из промиса аксиоса внутри экшена?

ITEM_DELETE({ commit }, item) { return new Promise((resolve, reject) => { api.items.delete({ url_params: { id: item.id } }) .then((ctx) => { commit(ITEM_DELETE, item.id); resolve(ctx); }).catch((ctx) => { reject(ctx); }); }); },

типо вот так

так вообще можно?

Illya
28.09.2017
09:40:30
можно, но это фундаментально неверно

НИКОГДА не создавайте новый промис, если у вас уже есть существующий

как только у вас в коде есть промис new Promise там не должно быть ни в коем случае

Dave
28.09.2017
09:41:30
хорошо - а как тогда в резолве если вернуть только промис аксиоса взаимодействовать с мутациями

Igor
28.09.2017
09:41:32
ага, api.items.delete уже возвращает промис )

Dave
28.09.2017
09:41:33
из компонента что ли?

Illya
28.09.2017
09:42:02
потому что промисы делались ради чейнинга

Google
Illya
28.09.2017
09:42:13
промисы внутри промисов - это признак непонимания работы промисов

No
28.09.2017
09:42:24
ok, point taken

Dave
28.09.2017
09:42:38
@xanf_ua хорошо. допустим все верно. тогда я возвращаю промис аксиоса - как мне решить вызов мутации

если резолвить промис я буду уровнем выше

даже не в сторе

Illya
28.09.2017
09:42:50
sigh

Dave
28.09.2017
09:43:08
эм.. эт как?

Illya
28.09.2017
09:43:25
ITEM_DELETE({ commit }, item) { return api.items.delete({ url_params: { id: item.id } }) .then((ctx) => { commit(ITEM_DELETE, item.id); return ctx; }); },

всё

Igor
28.09.2017
09:43:39
из экшена промис возвращать
ну вообще нормально делать асинхронных эншен, что не так?

Dave
28.09.2017
09:44:08
this.ITEM_DELETE(this.item).then((ctx) => { //some logic });

Igor
28.09.2017
09:44:29
рездели ответственность и реши , кто за что будет отвечать. Экшен за какоето действие и т.д.

Dave
28.09.2017
09:44:49
мне нужно на окончательном моменте выполнения экшена что то делать

контекста для этого у меня нет в сторе

есть только в компоненте.

Illya
28.09.2017
09:45:37
ну так dispatch возвращает промис

Igor
28.09.2017
09:45:44
мне нужно на окончательном моменте выполнения экшена что то делать
если это тесно связанная логика, то в экшене, если это действие "после выполнения" может будь другим - то вынеси эту логику за пределы экшена и просто возвращай промис

Illya
28.09.2017
09:45:46
then'ьте его

Dave
28.09.2017
09:46:37
@Kraigo в том все и дело - что мне не хочется выносить логику которая должна быть в экшене за его пределы.

@xanf_ua return ctx вернет dispatch?

Google
Igor
28.09.2017
09:47:36
action({commit}) { return axios.then(() => { /* login */}); }

так у тебя будето выполнен промис, потом будет выполнена некая логика, и всё равно вернется ассинхронных промис, который можно будет отловить и сделать еще какуюто логкику после выполнения всего экшена

Dave
28.09.2017
09:48:40
Ухты!

Спасибо!

*ушел пробовать*

Igor
28.09.2017
09:49:42
Это же тот же вариант что ты сделал, только без обвёртки new Promise, как советует @xanf_ua

Dave
28.09.2017
09:50:36
ну я не шарящий - нубло - новые нюансы открываю.

Igor
28.09.2017
09:51:14
и на сколько мне не изменяет память, catch выполняется если какой то один из промисов во всей цепочке вызвал эксепшен, а что бы отловить Reject - нужно передать в then второй аргумент - function(err){}

Dave
28.09.2017
10:03:53
@xanf_ua @Kraigo СПАСИБА!!!!!

этоже сколько кода мне теперь убирать... псц

Igor
28.09.2017
10:08:52
catch ловит и rejection'ы
catch ловит reject текущего промиса или всех предыдущих? Он также возвращает promise?

Illya
28.09.2017
10:09:00
да, всех

да, возвращает

Igor
28.09.2017
10:10:01
да, всех
вот, я это и имел ввиду. А второй аргумент ловит reject текущего промиса. Хотя ладно, не суть

Illya
28.09.2017
10:10:10
нет

если у нас цепочка, то второй аргумент поймает реджект любого промиса выше по цепочке

(естественно еще не обработанный и не пойманный)

Anton
28.09.2017
10:16:58
Приветствую, подскажите как правильно сделать глобальную функцию, хочу, например, сделать функцию для обращения к апи, чтобы внутри получать токен из стора, а не каждый раз в ручную подставлять ее, отправляя запрос через $http.get

Google
Igor
28.09.2017
10:17:31
(естественно еще не обработанный и не пойманный)
Тоесть если гдето поймался Reject дальше он ней поидёт?

Illya
28.09.2017
10:17:39
конечно

если вы его поймали - дальше считается что вы его обработали и цепочка промисов пойдет по нормальному сценарию

это ж как try / catch

Igor
28.09.2017
10:18:08
конечно
Promise.reject() .then(() => new Promise((res, rej) => { setTimeout(() => res(), 100); }) ) .catch( () => {console.log('catched')} ) .then( () => {console.log('resolved')}, () => {console.log('rejected')} );

это ж как try / catch
Сделал такой пример, давай его разберем

Illya
28.09.2017
10:18:42
в кэтче поймался reject, мы его обработали

поэтому его промис успешно зарезолвился

Igor
28.09.2017
10:18:58
в кэтче поймался reject, мы его обработали
и последний then будет обработан?

Illya
28.09.2017
10:19:23
ну блин, запустите

получите

catched - resolved

Igor
28.09.2017
10:19:58
ну блин, запустите
Запускал, сам написал же )

catched - resolved
а если catch поставить в конец

Illya
28.09.2017
10:20:27
просто будет rejected и все

Igor
28.09.2017
10:21:14
просто будет rejected и все
это потому что цепочка уже была обработана (then( второй аргумент)), а catch не ловит.

Illya
28.09.2017
10:21:21
да

Igor
28.09.2017
10:21:49
да
Спасибо, разобрался. Немного плавали знания с reject'ом

Александр
28.09.2017
11:11:18
Подскажите wysiwyg в который кастомные кнопки можно впихать

No
28.09.2017
11:11:54
tinyMCE глядел?

Google
No
28.09.2017
11:12:08
не уверен, что можно, но он один из самых продвинутых сейчас

если там такого нет, то искать далее проблематично будет

Alex
28.09.2017
11:44:31
Ребят, если вью грузит часть страницы аяксом (то есть это не spa), отображает карусель vue-slick, но при перегрузке карусели на другую, всё сбивается. Вёрстка летит, картинки вразнобой. Скрипт и стили же со страницы не пропали, заменились лиш вложенные элементы. Что может быть не так?

Alex
28.09.2017
11:54:27
Грузите не часть страницы, а только данные. Частями страницы пусть Vue сам занимается, а не с сервера получает

Alex
28.09.2017
12:01:10
Я не так выразился. Всё так и есть. Вью дёргает с бэка json только и отображает вёрстку. Так вот если первый раз заходишь на страницу, всё нормально, но стоит на странице нажать на кнопку смены опций товара, подгужаются данные товара, в том числе и ссылки на картинки, рисуется карусель и она вся раскидана

Alex
28.09.2017
12:03:41
Вангую что сейчас кто то напишет, что тебе нужно показать нам код

Alex
28.09.2017
12:09:17
Понимаю. Бывает погружаешься в проблему и вроде бы описываешь что-то, а со стороны кажется бредом. Но и показать код не получится, уж слишком всё запутанно. Попробую еще подолбаться

Жалгас
28.09.2017
12:10:52
как проследить за рутом?

watch: { $root (val) { console.log('root', val) } } ничего не дает

Illya
28.09.2017
12:12:45
появление новых свойств в $root

Жалгас
28.09.2017
12:13:13
изменение свойства в руте

Illya
28.09.2017
12:13:16
странная идея

Жалгас
28.09.2017
12:13:29
$root.prop = 'abs'

Nightwelf
28.09.2017
12:15:21
всем привет! кто подскажет, может кто встречал, на сервак отправляю сокетом запрос, а ответ приходит два раза

что такое может быть?

No
28.09.2017
12:17:10
в сокете нет вроде запрос/ответ

есть канал, в него летят месаджи

Nightwelf
28.09.2017
12:18:20
я подключился, сделал setinterval, далее делаю this.$socket.emit

на серваке ловлю это и кидаю ответом на клиент

Страница 1408 из 3900