当前位置: 首页 > news >正文

安徽服装网站建设昆山网站建设公司苏州爬虫科技

安徽服装网站建设,昆山网站建设公司苏州爬虫科技,未来最吃香的十大行业2022,阿里巴巴网页设计教程解决方案入口 拷贝日志以及json等第三方源码 增加包含目录 编写接口 默认模板已经有一个回调函数了 照葫芦画瓢就行 其中几个重要的点要注意 1.参数传入 比如如下的例子: 头文件定义: public:下增加 Napi::Value StartAnswer (const Napi::Callb…

解决方案入口

拷贝日志以及json等第三方源码
增加包含目录

编写接口

默认模板已经有一个回调函数了
照葫芦画瓢就行
其中几个重要的点要注意

1.参数传入

比如如下的例子:
头文件定义:
public:下增加

Napi::Value StartAnswer   (const Napi::CallbackInfo&);

在VcansNodeApi::GetClass 中定义注册函数。

VNodeApi::InstanceMethod("StartAnswer"   , &VNodeApi::StartAnswer   ),

编写NAPI函数, 这里面的VNodeApi::DeviceCallBackNotify是定义的静态回调函数指针。一开始不用关注这个。
info[0].AsNapi::Number();这个就是指针取值的方式。

Napi::Value VNodeApi::StartAnswer(const Napi::CallbackInfo& info)
{spdlog::info("{} :: Function Enter.", __FUNCTION__);Napi::Env env = info.Env();bool bret = true;int p1 = info[0].As<Napi::Number>();string p2 = info[1].As<Napi::String>().Utf8Value();HRET ret = m_ans_question->StartAnswer(p1, p2, VNodeApi::DeviceCallBackNotify);if (HR_OK != ret) {spdlog::error("{} :: StartAnswer ret 0x{:08x}.", __FUNCTION__, ret);bret = false;}isAnsing = true;spdlog::info("{} :: Function Leave.", __FUNCTION__);return Napi::Boolean::New(env, bret);
}

2.参数传出

直接return 一个Napi的对象就行。

return Napi::Boolean::New(env, bret);  
return Napi::String::New(env, str_res);

3.函数指针传入作为回调

这是一个函数指针回调的方式,外部通过这个注册函数将函数指针传入。将函数指针创建为一个线程安全的napi线程回调函数对象。赋值给一个全局的或者类静态变量,以供后续静态函数回调访问。

Napi::ThreadSafeFunction threadSafeCallback;
Napi::Value VNodeApi::SetCallBack(const Napi::CallbackInfo& info)
{Napi::Env env = info.Env();if (info.Length() < 1) {throw Napi::Error::New(env, "Missing argument");}if (!info[0].IsFunction()) {throw Napi::TypeError::New(env, "Wrong argument type");}Napi::Function napiFunction = info[0].As<Napi::Function>();threadSafeCallback =Napi::ThreadSafeFunction::New(env, napiFunction, "Callback", 0, 1);return Napi::String::New(env, "Done");
}

4.调用js函数

函数指针创建为全局线程安全后就可以直接使用了。这时候不分线程内线程外等逻辑。都可以直接调用。调用方式如下:
其中注意如下的内容: 回调传入的参数是在匿名函数中定义的,所以要与外部SetCallback传入的函数参数格式以及类型一致。

std::string msg = "hello node-api";
// callback param
auto callback = [msg](Napi::Env env, Napi::Function jsCallback) {
Napi::String napiMessageString = Napi::String::New(env, msg);
jsCallback.Call({ napiMessageString });
}
threadSafeCallback.NonBlockingCall(callback);

编译

可以直接使用npm install 进行触发重新编译,会解析binding.gyp之后进行重新生成makefile
npm install

http://www.yayakq.cn/news/450081/

相关文章:

  • 内网小网站的建设ueditor解析wordpress
  • 杨凌网站建设哪家好建设网站请示宣传
  • 如何判断网站数据库类型微信小程序制作过程
  • 做网站只用php不用html全国购物网站排名
  • 商城网站建设特点哈尔滨品牌网站建设
  • 做网站后台需要写代码吗天津建设工程信息王
  • 免费发布租房信息网站有关网站建设的合同
  • 加强意识形态建设 办好政协网站班级网站的规划与建设
  • 网站建设公司走进深圳一百讯新网域名续费
  • 浏览器网站大全企业网站源码带手机版
  • 新手如何建站深圳全网建站公司推荐
  • 西城区好的网站建设多少钱j2ee网站开发
  • 快速网站排名梅县区住房和城乡规划建设局网站
  • 企业网站源码去一品资源网大型网站开发 书籍
  • 金融网站织梦模板免费下载开封网站seo
  • 关于做美食的小视频网站网站源码建站教程
  • 中山专业手机网站建设php怎么创建网站
  • 招商网站的建设目的注册好域名之后怎么做个人网站
  • 做网站商城需要什么软件买链接网
  • 麻江网站建设公司做网站域名归谁
  • wap网站 区别焦作建设网站哪家好
  • 怎样做班级网站山东省建设安全生产协会网站
  • 东明菏泽网站建设wordpress 共享
  • 开发一个个人网站广东网站建设联系电话
  • 手机网站 英文做网站的傻瓜软件
  • 潍坊做网站价格百度seo优化排名软件
  • 企业网站设计总结wordpress 评论关闭
  • 杂志网站建设青岛学网站建设的学校
  • 做视频网站需要网络设置网站
  • 南雄市住房和城乡建设局网站html免费网站模板