Разработка плагина Obsidian: отладка fetch и AbortController
Автор: Пять Франков
Загружено: 2024-12-11
Просмотров: 28
Описание:
Автоматическое саммари по записи стрима:
Cursor полезен не только для генерации кода, но и для обсуждения архитектуры. Он может подсказать, почему передача параметров через `bind(this)` в асинхронных функциях — рискованная идея, которая может привести к утечкам памяти.
Основная проблема с прерыванием запроса была не в самом `AbortController`. Оказалось, что кастомная обертка над `fetch` ждала полного завершения ответа, вместо того чтобы возвращать поток данных сразу, что делало отмену бессмысленной.
Чтобы проверить, не указывает ли `this` на глобальный объект, можно использовать простое сравнение `this === globalThis`. Это надежный способ убедиться, что функция вызвана с нужным контекстом, а не в глобальной области видимости.
Разработка плагина для Obsidian показала, что даже в рамках одной экосистемы нужно писать разный код для десктопа и мобильных устройств. Сетевые запросы в Electron и на мобильной платформе работают по-разному, и это приходится учитывать.
Плейлист: • Разработка AI Providers для Obsidian
Стримы про разработку плагина для Obsidian каждый день
/ pfrankov
00:00:00 — Начало
00:02:08 — Проблема с AbortController
00:07:01 — Передача параметров через контекст
00:11:16 — Обращение к Cursor за помощью
00:13:42 — Обсуждение Cursor и его использования
00:23:03 — Риски использования 'this' в асинхронном коде
00:29:11 — Решение: передача контроллера через bind
00:33:52 — Обработка незавершенных промисов
00:39:05 — Проверка на GlobalThis
00:44:40 — Отладка: почему запрос не прерывается
00:52:23 — Анализ реализации Electron fetch
00:55:16 — Учет мобильной версии Obsidian
01:06:02 — Сравнение производительности методов
01:10:40 — Найдена причина: неверная сигнатура ответа
01:15:20 — Финальное исправление кода
01:18:04 — Завершение
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: