Перейти до вмісту

Довідник 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.

Чи була ця сторінка корисною?