我有一个本机插件,它实现了一个接受回调的函数,并调用带有可能错误和结果的回调。
我目前从NodeJS文档中获得以下代码,该代码直接使用结果调用该回调:
v8::Local<v8::Function> callback = v8::Local<v8::Function>::Cast(args[0]);
const unsigned callback_argc = 1;
v8::Local<v8::Value> callback_arguments[callback_argc] = { physical_drives };
callback->Call(v8::Context::GetCurrent()->Global(), callback_argc, callback_arguments);
在某些情况下,我想用null
第一个参数调用回调:
v8::Local<v8::Value> callback_arguments[callback_argc] = {
v8::Null()
physical_drives
};
此操作失败,因为我无法使用callback_arguments
或v8::Null()
初始化v8::Undefined()
,因为这些函数会返回v8::Primitive
而callback_arguments
包含v8::Value
。
手动演员既不可能:
v8::Local<v8::Value>::Cast(v8::Null());
将null
/ undefined
值传递给回调的正确方法是什么?
答案 0 :(得分:6)
v8::Primitive
是v8::Value
的子类,因此将其向上播放是完全正确的。代码无法编译,因为您无法将v8::Handle
向下转换为v8::Local
。
只需更改callback_arguments
的类型:
v8::Handle<v8::Value> callback_arguments[callback_argc] = {
v8::Null(),
physical_drives
};
这应该编译得很好。