AsyncContext

AsyncContext

Napi::AsyncWorker类可能并非适用于所有场景。当使用其他任何异步机制时,引入新的Napi::AsyncContext类是必要的,以确保运行时能正确跟踪异步操作。Napi::AsyncContext类可传递给Napi::Function::MakeCallback()方法,以正确恢复正确的异步执行上下文。

方法

构造函数

创建一个新的Napi::AsyncContext

cpp 复制代码
explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name);
  • [in] env:用于创建Napi::AsyncContext的环境。
  • [in] resource_name:以空字符结尾的字符串,表示为async_hooks API 所暴露的诊断信息提供的资源类型标识符。

构造函数

创建一个新的Napi::AsyncContext

cpp 复制代码
explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name, const Napi::Object& resource);
  • [in] env:用于创建Napi::AsyncContext的环境。
  • [in] resource_name:以空字符结尾的字符串,表示为async_hooks API 所暴露的诊断信息提供的资源类型标识符。
  • [in] resource:与异步操作相关联的对象,将传递给可能的async_hooks

析构函数

销毁Napi::AsyncContext实例。

cpp 复制代码
virtual Napi::AsyncContext::~AsyncContext();

Env

获取创建该异步上下文时的环境。

cpp 复制代码
Napi::Env Env() const;

返回创建该异步上下文的Napi::Env环境。

运算符

cpp 复制代码
Napi::AsyncContext::operator napi_async_context() const;

返回由Napi::AsyncContext对象包装的 Node-API 的napi_async_context。这可用于混合使用 C Node-API 和 node-addon-api。

示例

cpp 复制代码
#include "napi.h"

void MakeCallbackWithAsyncContext(const Napi::CallbackInfo& info) {
  Napi::Function callback = info[0].As<Napi::Function>();
  Napi::Object resource = info[1].As<Napi::Object>();

  // 创建一个新的异步上下文实例。
  Napi::AsyncContext context(info.Env(), "async_context_test", resource);

  // 使用异步上下文实例调用回调函数。
  callback.MakeCallback(Napi::Object::New(info.Env()),
      std::initializer_list<napi_value>{}, context);

  // 异步上下文实例在此处会自动销毁,因为它像`Napi::HandleScope`一样具有块作用域。
}
相关推荐
王老师青少年编程4 小时前
2025年【江苏“信息与未来”编程思维】真题及题解(T2:坐标变换)
c++·题解·真题·坐标变换·编程思维·江苏·信息与未来
随风一样自由5 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
IMPYLH6 小时前
HTML 的 <data> 元素
前端·html
西门吹-禅6 小时前
java springboot N+1问题
java·开发语言·spring boot
YHHLAI6 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
skywalk81637 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
weixin_BYSJ19877 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
2023自学中7 小时前
C++ 内存追踪器
linux·c++
沪飘大军7 小时前
ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理
javascript
IT笔记8 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust