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

Всем привет. Встала задача выполнить некое действие после того, как

успешно выполнятся несколько запросов на бэк.

Решил сделать так:
Создаю промис внутри которого делаются асинхронные запросы. При чём, перед каждым запросом, увеличиваю некую переменную на единицу.
Когда запрос выполнится, переменная уменьшается на единицу.
После отправки всех запросов запускаю таймер, который ждёт когда переменная снова станет нулём (все запросы завершились) и завершаю промис.

save() {
this.upload().then((success) => {
if (success === true) {
console.log('SUCCESS');
} else {
console.log('TIMEOUT');
}
});
},
upload() {
return new Promise((resolve) => {
const timeout = 3000;
const cycleTime = 100;
const maxCycles = parseInt(timeout / cycleTime);
const url = `${this.$main_url}/api/endpoint`;
let totalCount = 0;

_.each(this.list, (item) => {
if (item.need) {
totalCount++;
http.post(url, item).finally(() => {
totalCount--;
});
}
});

let cycleCount = 0;
const intervalId = setInterval(() => {
cycleCount++;
if (totalCount === 0) {
clearInterval(intervalId);
resolve(true);
} else if (cycleCount >= maxCycles) {
clearInterval(intervalId);
resolve(false);
}
}, cycleTime);
});
},


Насколько это приемлемо? "Ааааа, юзай вуекс!" или норм?

PS: Код упростил, для читаемости

2 ответов

4 просмотра

Не совсем понял, при чём тут vuex. Я думаю, Promise.all - то, что вам нужно

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта