Pull to refresh

Comments 8

Хорошая статья, но честно не хватает визуала :)
Не все любят смотреть код. В целом понял какое используется решение.
Идею можно взять на заметку!

Статья интересная, было интересно посмотреть исходный код библиотеки) Даже звездочку поставил

По статье - довольно много кода. Как вариант могу предложить - разбивать на логические блоки, по типу - "создадим тестовую функцию", "добавим её в цепочку", "отменяем цепочку". Мне кажется проще так будет для понимания, потому что читающий сможет сосредоточиться на логическом блоке, а не листать весь код

Автору удачи, задумка крутая, исходники "прошершены"

Вопрос только (из исходника), может вместо подхода с просмотром через интервал - добавить что-то типа наблюдателя? А то получается что мы цикл прогоняем и просто в нём ждем завершения. Плюсом т.к. через промисы сделана sleep, я думаю может быть в очереди микротаск этот может затеряться среди других и время может быть увеличено с 100мс до 300мс (как пример). Если я неправ в чем-то - прошу поправить :)

/**
 * Waits until the chain is not running anymore. If the chain is not running, the function returns immediately.
 * @returns {Promise<void>}
 */
async waitForChainToFinish() {
  while (this.#isRunning) {
    await sleep(100);
  }
}


upd1: Можно попробовать взять за основу Proxy, они должны (насколько знаю) сразу применять изменения и запускать код внутри оберток синхронно, что дает преимущество надо промисами

Спасибо! Постараюсь в следующий раз код разбивать на более маленькие блоки :).

Кстати, что касается waitForChainToFinish() мысль вполне здравая. Можно ресолвить промис с событий complete, error, cancel. Я рассмотрю этот вариант.

Что-то я не понимаю, зачем какие-то чейны, если задача из примера - типичный дебаунс. Создаём тайммаут, создаём функцию, которая отменяет таймаут - profit.

У нас там не один слип, а два слипа. Дебаунс вы можете применить в начале вызова функции. Но не забудьте, что нам нужно еще и отменить всю цепочку. Кроме того, отменить все последующие асинхронные функции.

Основная "фича" данного подхода прерывание асинхронных операций, что в вашем х*к х*к и вродакшн не предусмотрено. Но на самом деле на дебаунсе код не многим бы отличался, просто везде пробрасывался бы абортконтроллер который при старте нового чейна обнулял предыдущий, но в данной статье цель автора в демонстрации приятнoй утилитки которая может комуто да облегчит жизнь.

Sign up to leave a comment.

Articles