Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript v8:如何在FunctionTemplate中包含脚本_Javascript_C++_Node.js_V8_Node.js Addon - Fatal编程技术网

Javascript v8:如何在FunctionTemplate中包含脚本

Javascript v8:如何在FunctionTemplate中包含脚本,javascript,c++,node.js,v8,node.js-addon,Javascript,C++,Node.js,V8,Node.js Addon,我这样做是为了使用nodejs加载项创建一个MongoDB nodejs驱动程序包装器。 我想创建一个包装器来删除异步特性。遗憾的是,上述驱动程序没有“同步”选项 我尝试构建MangGDB C驱动程序和MunGDB C++驱动程序,但是已经.< /P> 我的问题是: 如何将字符串javascript函数体解析为v8函数 我有这个密码 //args[0] is from the parameter: const FunctionCallbackInfo<Value>& args

我这样做是为了使用nodejs加载项创建一个MongoDB nodejs驱动程序包装器。 我想创建一个包装器来删除异步特性。遗憾的是,上述驱动程序没有“同步”选项

<>我尝试构建MangGDB C驱动程序和MunGDB C++驱动程序,但是已经.< /P> 我的问题是: 如何将字符串javascript函数体解析为v8函数

我有这个密码

//args[0] is from the parameter: const FunctionCallbackInfo<Value>& args

Local<ObjectTemplate> global_templ = ObjectTemplate::New();
global_templ->Set(String::NewFromUtf8(isolate, "db"), args[0]);
Local<Context> context = Context::New(isolate, NULL, global_templ);

string str1 = "";
str1 += "if(!(db.serverConfig.isConnected && db.serverConfig.isConnected())) ";
str1 += "   return false;";
str1 += "else";
str1 += "   return true;";
const char * str2 = str1.c_str();
context->Enter();
Local<String> source = String::NewFromUtf8(isolate, str2);

Local<Script> script = Script::Compile(source);

Local<Value> result = script->Run();
args.GetReturnValue().Set(result);
context->Exit();
//args[0]来自参数:const function callbackinfo&args
本地全局模板=ObjectTemplate::New();
全局模板->设置(字符串::NewFromUtf8(隔离,“db”),args[0]);
本地上下文=上下文::新建(隔离、空、全局模板);
字符串str1=“”;
str1+=“如果(!(db.serverConfig.isConnected&&db.serverConfig.isConnected())”;
str1+=“返回false;”;
str1+=“其他”;
str1+=“返回真值;”;
const char*str2=str1.c_str();
上下文->输入();
本地源=字符串::NewFromUtf8(隔离,str2);
本地脚本=脚本::编译(源代码);
本地结果=脚本->运行();
args.GetReturnValue().Set(结果);
上下文->退出();
这将产生一个错误:非法返回语句 我得出结论,我必须把这个函数

Local<FunctionTemplate> func = FunctionTemplate::New(isolate);
Local func=FunctionTemplate::新建(隔离);
我不知道如何将函数体解析到模板中。:'(


PS:我是一个新手,所以请让单词newb友好。哈哈哈

你到底为什么要删除节点的异步特性?为什么不接受它并使用回调?如果你不想异步,回到PHP:)好吧,Javascript的异步特性是为前端设计的。发出请求并仍然处理视图,而不会看起来像在等待数据。现在javascripts被用于后端,读取文件,访问数据库。甚至node在一些模块上也有同步选项。异步是JS的主要功能。它在前端很有用,那么这怎么可能成为后端的障碍呢?每个人都以异步方式编写他们所有的节点应用程序,我们都使用这种能力,而不是破坏它或围绕它工作。我们进行异步数据库调用、异步路由、异步一切,这真是太棒了。你的推理中有些东西我真的不明白。正如我所说的,如果您还没有准备好异步,请使用一种旧的、缓慢的、同步的语言,比如PHP。无意冒犯,但我是认真的。@JeremyThille,javascript语言与同步/异步几乎没有任何关系,它的力量也不来自于此。也许你在考虑某些API?但是它们并不是真正的javascript专用的。@JeremyThille如果你不理解我的一点推理,你就不是在试图理解。我不会坚持使用回调地狱和太多的承诺(当每个操作都需要完成之前的操作时,您会理解)。不要误解我的意思,javascript总体上是令人惊讶的,但不仅仅是我在试图找到一种更干净的同步代码。参见ES6发电机。PHP并不老,也不慢。如果你仍然不明白,你就是那个又老又慢的人。无意冒犯,但我是认真的。:)究竟为什么要删除节点的异步特性?你为什么不接受它并使用回调呢?如果您不想要异步,请回到PHP:)AFAIK,Javascript的异步特性是为前端设计的。发出请求并仍然处理视图,而不会看起来像在等待数据。现在javascripts被用于后端,读取文件,访问数据库。甚至node在一些模块上也有同步选项。异步是JS的主要功能。它在前端很有用,那么这怎么可能成为后端的障碍呢?每个人都以异步方式编写他们所有的节点应用程序,我们都使用这种能力,而不是破坏它或围绕它工作。我们进行异步数据库调用、异步路由、异步一切,这真是太棒了。你的推理中有些东西我真的不明白。正如我所说的,如果您还没有准备好异步,请使用一种旧的、缓慢的、同步的语言,比如PHP。无意冒犯,但我是认真的。@JeremyThille,javascript语言与同步/异步几乎没有任何关系,它的力量也不来自于此。也许你在考虑某些API?但是它们并不是真正的javascript专用的。@JeremyThille如果你不理解我的一点推理,你就不是在试图理解。我不会坚持使用回调地狱和太多的承诺(当每个操作都需要完成之前的操作时,您会理解)。不要误解我的意思,javascript总体上是令人惊讶的,但不仅仅是我在试图找到一种更干净的同步代码。参见ES6发电机。PHP并不老,也不慢。如果你仍然不明白,你就是那个又老又慢的人。无意冒犯,但我是认真的。:)