我在我的 C++ 节点扩展中定义了以下包装类。
class JSStatus : public Nan::ObjectWrap {
public:
long statusCode;
std::string statusMessage;
std::string statusDetails;
static NAN_MODULE_INIT(Init);
static NAN_METHOD(New);
static NAN_GETTER(HandleGetters);
static NAN_SETTER(HandleSetters);
static Nan::Persistent<v8::FunctionTemplate> constructor;
};
正常的调用顺序是这样的(全部在 Javascript 线程上):
- Javascript 调用 MyExtension::UpdateStatus(callbackFunction)
- UpdateStatus() 保存 'callbackFunction' 供 SetStatus() 以后使用
- UpdateStatus() 调用本机库,该库将状态返回给称为 SetStatus(NativeStatus) 的已知命名方法
- SetStatus() 创建一个 'JSStatus',从 nativeStatus 复制值
- SetStatus() 将“JSStatus”对象传递给称为 StatusUpdated(JSStatus) 的已知 JavaScript 函数
我被困在#5 上,因为似乎没有办法在 C++ 中“新建”一个 Nan::ObjectWrap,然后将该对象传递给 Javascript。
这似乎很常见,可以被 NAN 覆盖,但我一直无法确定如何去做。有任何想法吗?