0

我正在编写异步模块,但我无法传递数组结构。请帮忙。那就是出现的错误。如何避免?错误 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);
}
4

1 回答 1

1

你的线路

*(request->result) = getArray(1);

分配一个Handle<Array>*(Handle<Array>)(这意味着Array*),这是无效的。

但是,即使如此,您也没有考虑到一个重要因素。您的wmiWorker函数在单独的线程中运行。NodeJS 和 V8 只允许 JS 单线程执行,而您尝试做的是在单独的线程内创建一个 JS 数组。

相反,您将需要创建一个向量或其他东西,并从工作回调的after_work回调内部生成 V8 数组。

于 2013-06-07T15:19:03.153 回答