На этой странице

Этот раздел рассматривает продвинутые паттерны Node-API, с которыми вы столкнётесь, как только ваш нативный аддон вырастет за пределы простого синхронного вызова функции.

  • Ссылки на объекты и функции — использование ObjectReference и FunctionReference, чтобы поддерживать JavaScript-объекты «в живых» через границы вызовов, чтобы сборщик мусора не забрал их преждевременно
  • AsyncWorker — выполнение долгих C/C++-операций в фоновом потоке с помощью класса AsyncWorker из node-addon-api, не блокируя event loop Node
  • Thread-safe функции — вызов JavaScript из нативных потоков, не являющихся главным потоком Node.js, с помощью API thread-safe функций
  • Контекстная осведомлённость (context awareness) — написание аддонов, которые корректно загружаются и выгружаются в присутствии Worker Threads, включая instance data и cleanup-хуки
ТемаКогда она вам нужна
Ссылки на объекты/функцииХранение JS-колбэка или объекта в C++-члене данных, переживающем текущий вызов
AsyncWorkerВынос CPU-bound или блокирующей I/O-работы с главного потока
Thread-safe функцииВызов JS-колбэков из нативных потоков, которыми вы управляете сами
Контекстная осведомлённостьВаш аддон используется в окружениях Worker Thread или загружается/выгружается несколько раз