Javascript 带c+的异步模块+;v8对于节点js,与结构中的类型关联的错误
我正在编写异步模块,但无法传递数组结构。请帮忙。这就是出现的错误。如何避免呢? 错误C2440:“=”:无法从“v8::Handle”转换为“v8::Array*”Javascript 带c+的异步模块+;v8对于节点js,与结构中的类型关联的错误,javascript,c++,node.js,struct,v8,Javascript,C++,Node.js,Struct,V8,我正在编写异步模块,但无法传递数组结构。请帮忙。这就是出现的错误。如何避免呢? 错误C2440:“=”:无法从“v8::Handle”转换为“v8::Array*” struct Async { Handle<v8::Array> result; } void wmiWorker(uv_work_t* req) { Async* request = (Async*)req->data; *(request->result) = getArray(1
struct Async {
Handle<v8::Array> result;
}
void wmiWorker(uv_work_t* req) {
Async* request = (Async*)req->data;
*(request->result) = getArray(1);
}
Handle<Array> getArray(int x) {
HandleScope handle_scope;
Handle<Array> array = Array::New(3);
if (array.IsEmpty())
return Handle<Array>();
array->Set(0, Integer::New(x));
return handle_scope.Close(array);
}
struct Async{
处理结果;
}
作废WMI工作人员(紫外线工作要求){
异步*请求=(异步*)请求->数据;
*(请求->结果)=获取数组(1);
}
句柄getArray(int x){
手柄镜手柄镜;
handlearray=array::New(3);
if(array.IsEmpty())
返回句柄();
数组->集合(0,整数::新(x));
返回句柄\范围关闭(数组);
}
您的线路
*(request->result) = getArray(1);
将句柄
分配给*(句柄)
(意思是数组*
),这是无效的
然而,即使这样,还有一个重要的因素,你没有考虑到。您的wmiWorker
函数正在单独的线程中运行。NodeJS和V8只允许JS执行一个线程,您试图做的是在一个单独的线程内创建一个JS数组
相反,您需要创建一个向量或其他东西,并在工作后从工作回调的
内部生成V8数组。我按照您所说的做了,但没有工作。也就是说,结果现在是持久的,数组是本地的。错误C2679:二进制“=”:未找到接受类型为“v8::Handle”的右操作数的运算符(或没有可接受的转换)其他功能。我不明白她为什么反对。如果您声明了一个函数wmiWorker Local array=array::New(1),所有函数都已编译,那么cout@YaroslavL。呜呜声,修正了。对于你的第二个问题,你能在问题中举个例子吗?我并不是100%地理解你的要求。Local@YaroslavL。我更新了我的答案,我相信你的问题是什么。