5

我正在开发一个 Node 模块,并试图将一个类的实例ObjectWrap作为参数传递给 JavaScript 回调。

在其他地方,我已经能够成功地将 JavaScript 对象解包到同一个类,使用:

 GitCommit *commit = ObjectWrap::Unwrap<GitCommit>(args[0]->ToObject());

我该如何做相反的事情?我想将一个实例传递GitCommit给 JavaScript 回调,例如:

Local<Value> argv[] = {
  // Error code
  Local<Value>::New(Integer::New(0)),
  // The commit
  commit // Instance of GitCommit : ObjectWrap
};

// Both error code and the commit are passed, JS equiv: callback(error, commit)    
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);

这可能吗?如果是这样,请给我一个例子,或相关文档的链接?

4

1 回答 1

3

所以你正在编写一个节点插件。尝试:

Handle<Value> argv[] = {
    // Error code
    Integer::New(0),
    // The commit
    commit->handle_ // Instance of GitCommit : ObjectWrap
};

// Both error code and the commit are passed, JS equiv: callback(error, commit)    
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);
于 2013-03-03T13:21:06.070 回答