首页 > 其他分享 >Napi::CallbackInfo Napi::Env

Napi::CallbackInfo Napi::Env

时间:2024-03-28 14:45:18浏览次数:17  
标签:info env sum JavaScript Env CallbackInfo Napi

Napi::Value EncryptPassword(const Napi::CallbackInfo& info)
{
        Napi::Env env = info.Env();
    /*
    Napi::Env env = info.Env();
    if (info.Length() < 2)
    {
        Napi::TypeError::New(env, "参数个数异常").ThrowAsJavaScriptException();
        return env.Null(); // 返回JavaScript的null
    }
    if (!info[0].IsNumber() || !info[1].IsNumber())
    {
        Napi::TypeError::New(env, "参数类型异常").ThrowAsJavaScriptException();
        return env.Null();
    }
    // Napi::Value -> Napi::Number
    double arg0 = info[0].As<Napi::Number>().DoubleValue();
    double arg1 = info[1].As<Napi::Number>().DoubleValue();
    double sum = Securekit::EncryptPassword(arg0, arg1);
    Napi::Number result = Napi::Number::New(env, sum);
    */
   // return result;
    double sum = 1;
    Napi::Number result = Napi::Number::New(env, sum);
      return result;
}

 

以上代码是一个 C++ 函数 EncryptPassword,使用了 N-API 来与 JavaScript 进行交互。下面是对代码进行详细解释:

  1. EncryptPassword 函数的参数是一个 Napi::CallbackInfo 对象,它提供了与 JavaScript API 交互所需的一些信息,例如调用函数时传入的参数和环境上下文等。

  2. Napi::Env env = info.Env(); 用于获取 N-API 的环境变量,通过 info.Env() 方法获取当前函数调用的环境变量。

  3. if (info.Length() < 2) 检查传入的参数个数,如果参数个数少于 2,则抛出 JavaScript 异常并返回 null

  4. if (!info[0].IsNumber() || !info[1].IsNumber()) 检查参数类型,如果参数不是数字类型,则抛出 JavaScript 异常并返回 null

  5. double arg0 = info[0].As<Napi::Number>().DoubleValue(); 将参数转换为数字类型,并通过 DoubleValue() 获取其值。

  6. double sum = Securekit::EncryptPassword(arg0, arg1); 调用 Securekit 类的静态函数 EncryptPassword,传入参数 arg0arg1 进行计算,并将结果保存在 sum 变量中。

  7. Napi::Number result = Napi::Number::New(env, sum); 使用 N-API 的 Napi::Number::New 方法将计算结果 sum 转换为 JavaScript 中的数字类型。

  8. return result; 返回计算结果给 JavaScript。

总而言之,以上代码用于将 JavaScript 中的两个数字参数传递给 Securekit 类的静态函数 EncryptPassword 进行加密计算,并将结果以数字类型返回给 JavaScript 调用方。在过程中,如果传入的参数不符合要求,将抛出异常并返回 null,以避免程序出现错误。

标签:info,env,sum,JavaScript,Env,CallbackInfo,Napi
From: https://www.cnblogs.com/hshy/p/18101638

相关文章

  • FLASK学习记录-PIPENV虚拟环境搭建
     $pipinstallflask-ihttps://pypi.tuna.tsinghua.edu.cn/simpleLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleCollectingflaskDownloadinghttps://pypi.tuna.tsinghua.edu.cn/packages/93/a6/aa98bfe0eb9b8b15d36cdfd03c8ca86a03968a87f27ce22......
  • STS中maven项目打包报错: No compiler is provided in this environment. Perhaps you
    这个报错的意思是在这个环境中没有编译环境,即不存在javac.exe,然后说一下JRE和JDK的区别:JRE(JavaRuntimeEnvironment):1、JRE是Java运行时环境,用于在计算机上运行Java程序。2、包含Java虚拟机(JVM)和Java核心类库,以及运行Java程序所需的其他支持文件。3、JRE通常用......
  • win11安装pyenv和pyenv-venv
    环境确认PowerShell提供了几个不同的执行策略级别,包括:Restricted:不允许任何脚本运行。这是默认的执行策略,为大多数用户提供了安全的起点。AllSigned:只允许运行由受信任的发布者签名的脚本。RemoteSigned:从本地计算机加载的所有脚本都可以运行,但从Internet下载的脚本必须......
  • Flask学习记录-pipenv虚拟环境搭建
    python环境$python-VPython3.9.181.安装pipenv$pipinstallpipenv-ihttps://pypi.tuna.tsinghua.edu.cn/simple$pipenv--versionpipenv,version2023.12.12.创建虚拟环境[flask-test1]$pipenvinstallCreatingavirtualenvforthisproject...Pipfile:/us......
  • NAPI :创建头文件,调用so库中方法报错:undefined symbol: box_get_auth_count()
    报错信息使用的头文件#ifndefauthorization_H#defineauthorization_H...intbox_get_auth_count();...#endif//authorization_H错误原因找不到box_get_auth_count,建议使用extern"C"extern“C”申明下面的方法用C编译解决方法使用的头文件#ifn......
  • 【Virtuoso环境设置第一篇】.cdsenv
    Virtuoso的环境你真的懂吗?这是环境系列的第一篇,教大家如何理解Virtuoso环境中.cdsenv的加载机制关于.cdsenv的默认加载顺序是什么?在查阅官方文档后,可以得到的结论是:第一顺位是所有已注册的软件工具的定制化.cdsenv,这些文件的位置如下:your_install_dir/tools/dfII/etc/tools/......
  • 2种包管理工具:pip和pipenv
    一、pippip 是Python的包安装器,它用于安装和管理Python包,它通过requirements.txt文件来管理项目所依赖的包1、生成requirements.txt文件:pipfreeze>requirements.txt2、安装requirements.txt依赖:pipinstall-rrequirements.txt3、激活虚拟环境:sourcemyenv/bin/activ......
  • SpringBoot3.x与SpringDoc OpenApi之Swagger接口排序
    直接使用Swagger之后,发现所有的Controller接口菜单都是无序的先看一下效果 就是利用了一下SpringDoc提供的接口做了一下自定义排序1.在Controller上加上注解@Tag(name="MenuController",description="1-菜单管理")这里需要注意description属性,在下面的代码里......
  • Visual Studio 插件 AnAPI++ for VS 2022
    AnmialAPIabbreviationAnAPI++isanautomaticallygeneratedWebAPIprojectthathasencapsulatedJwtOauth2tokenauthentication,SqlSugar,Swagger,Nlog,Crossdomaintechnologies,andsupportsNet6andaboveversionsAnmialAPI缩写AnAPI++是一个自动生成的We......
  • 中考英语首字母快速突破012-2021上海青浦英语二模-Earth Hour: A Global Call for Env
    PDF格式公众号回复关键字:ZKSZM012原文​WhatisEarthHour?​EarthHourisorganizedbytheWorldWideFundforNature(WWF)andit’sabigeventusuallyattheendofMarcheveryyear.Onthisevening,people‘godark’-thatis,switcho......