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

Всем привет! Не понимаю, как работает onCleanup в watch и

watchEffect. Хочу прерывать предыдущий fetch запрос, идущий к api.

Дока:

watchEffect(async (onCleanup) => {
const { response, cancel } = doAsyncWork(id.value)
// `cancel` will be called if `id` changes
// so that previous pending request will be cancelled
// if not yet completed
onCleanup(cancel)
data.value = await response
})

Пример: у меня есть вот такой вотчер, который срабатывает каждый раз при изменении listedUsers. При срабатывании я отправляю запрос к апишке, чтобы получить общих друзей (getMutual). Если я буду быстро тогглить этот список, то с сервера будет прилетать ошибка (Too many requests).

Мой вотчер:

watch(
() => ({ ...listedUsers }),
async (newList, oldList, onInvalidate) => {
const ids = Object.keys(newList)
mutualFriends.value = await getMutual(ids)
}
)

Вопрос: как прерывать предыдущие запросы, чтобы избежать такого поведения? Нужно ли писать свою функцию cancel, как в примере? Как тогда ее возвращать, если getMutual асинхронная?

6 ответов

30 просмотров

Смотря как работает getMutual. Решение будет скорее всего через AbortController и его использование в либе/модуле запросов у вас

Alexey-Topunov Автор вопроса
Grigorii K. Shartsev
Смотря как работает getMutual. Решение будет скоре...

Я понял, то есть, cancel — это не функция отмены "по умолчанию"? Ее нужно ручками написать, а потом возвращать из апи, правильно?

Alexey-Topunov Автор вопроса
Alexey Topunov
Спасибо!

Пример в axios: https://axios-http.com/docs/cancellation

Alexey-Topunov Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта