将null参数传递给v8回调

时间:2015-01-26 13:51:36

标签: node.js v8

我有一个本机插件,它实现了一个接受回调的函数,并调用带有可能错误和结果的回调。

我目前从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_argumentsv8::Null()初始化v8::Undefined(),因为这些函数会返回v8::Primitivecallback_arguments包含v8::Value

手动演员既不可能:

v8::Local<v8::Value>::Cast(v8::Null());

null / undefined值传递给回调的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

v8::Primitivev8::Value的子类,因此将其向上播放是完全正确的。代码无法编译,因为您无法将v8::Handle向下转换为v8::Local

只需更改callback_arguments的类型:

v8::Handle<v8::Value> callback_arguments[callback_argc] = {
    v8::Null(),
    physical_drives 
};

这应该编译得很好。