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`一样具有块作用域。
}
相关推荐
开开心心就好几秒前
图片白底怎么去掉?抠图工具抠完背景透明
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
朝朝辞暮i2 分钟前
C++ 第 22 课:const —— 不允许随便修改的数据
开发语言·c++·算法
web打印社区7 分钟前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
大圣编蚕9 分钟前
C语言怎么写小游戏?从零开始做一个贪吃蛇
c语言·开发语言
web打印社区13 分钟前
HTML5 静默打印:前端页面怎么调用打印机且尽量不弹窗
前端·javascript·vue.js·pdf·html·html5
Python大数据分析13 分钟前
开源免费、AI 驱动的 Web 打印设计器 OpenPrint:从拖拽设计到 ERP 对接全流程实战
前端·人工智能·开源
溪语流沙23 分钟前
【每天一个CSS | Day11】赛博朋克故障风文字:红青分离 + 切片抖动
前端·css
蒸蒸yyyyzwd29 分钟前
力扣二分总结-lowerbound
c++
Chen—LSN29 分钟前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
ShineWinsu39 分钟前
对于Redis:List类型的解析
数据库·c++·redis·链表·缓存·面试·list