
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
из компонента что ли?

No
28.09.2017
09:41:50
интересна имено причина

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 СПАСИБА!!!!!
этоже сколько кода мне теперь убирать... псц

Illya
28.09.2017
10:06:21
catch ловит и rejection'ы

Igor
28.09.2017
10:08:52

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

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')}
);

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

Igor
28.09.2017
10:18:58

Illya
28.09.2017
10:19:23
ну блин, запустите
получите
catched - resolved

Igor
28.09.2017
10:19:58

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

Igor
28.09.2017
10:21:14

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
на серваке ловлю это и кидаю ответом на клиент