我正在编写异步模块,但我无法传递数组结构。请帮忙。那是出现的错误。怎么避免呢? 错误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);
}
答案 0 :(得分:1)
你的行
*(request->result) = getArray(1);
将Handle<Array>
分配给*(Handle<Array>)
(这意味着Array*
),这是无效的。
然而即便如此,还有一个重要因素是您没有考虑到这一点。您的wmiWorker
函数正在一个单独的线程中运行。 NodeJS和V8只允许JS的单个执行线程,你试图做的是在一个单独的线程内创建一个JS数组。
相反,您需要创建一个向量或其他内容,并从工作回调的after_work
回调内部生成V8数组。