Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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 带c+的异步模块+;v8对于节点js,与结构中的类型关联的错误_Javascript_C++_Node.js_Struct_V8 - Fatal编程技术网

Javascript 带c+的异步模块+;v8对于节点js,与结构中的类型关联的错误

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

我正在编写异步模块,但无法传递数组结构。请帮忙。这就是出现的错误。如何避免呢? 错误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);
}
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。我更新了我的答案,我相信你的问题是什么。