Перейти к содержимому

Справочник API node:async_hooks

Частичная совместимость AsyncLocalStorage и AsyncResource

На этой странице
Open in ChatGPTOpen in Claude

Elide предоставляет AsyncLocalStorage, AsyncResource, createHook, executionAsyncId, triggerAsyncId, executionAsyncResource и asyncWrapProviders.

AsyncLocalStorage поддерживает run, exit, getStore, enterWith, disable, snapshot и bind. Распространение контекста частичное: синхронный код и таймер, созданный внутри run, видят хранилище, а продолжение Promise — нет.

import { AsyncLocalStorage } from "node:async_hooks";

const storage = new AsyncLocalStorage();
storage.run("request", () => {
  console.log(storage.getStore()); // request

  Promise.resolve().then(() => {
    console.log(storage.getStore()); // undefined
  });
});

createHook() возвращает объект с enable() и disable(), но Elide не предоставляет полный жизненный цикл асинхронных ресурсов Node. Библиотекам, которым нужен контекст через await, не следует полагаться на эту реализацию.

Reference

Status: Partial · 36 of 45 suite tests pass (80.0%) · since 1.1.0

Exports

ExportKindStatusNotes
async_hooksmodulePartialhooks fire for timers/immediates/promises but not yet for TCP/HTTP/TLS native resources
createHook()functionFullCreates a new AsyncHook instance
executionAsyncId()functionFullReturns the asyncId of the current execution context
triggerAsyncId()functionFullReturns the ID of the resource responsible for calling the callback that is currently being executed
AsyncLocalStoragepropertyFullThe AsyncLocalStorage class
AsyncResourcepropertyFullThe AsyncResource class

Tests: node-api node:async-hooks: 36 pass, 8 fail, 1 error, 3 skipped. Failing: test-async-hooks-destroy-on-gc.js, test-async-hooks-enable-recursive.js, test-async-hooks-fatal-error.js, test-async-hooks-http-parser-destroy.js, test-async-hooks-top-level-clearimmediate.js, test-async-local-storage-http-agent.js, test-async-local-storage-http-multiclients.js, test-async-local-storage-http-parser-leak.js, and 1 more.

Была ли эта страница полезной?