【发布时间】:2013-06-09 05:49:56
【问题描述】:
我正在使用 c++ 为 node.js 编写一个插件。
这里有一些sn-ps:
class Client : public node::ObjectWrap, public someObjectObserver {
public:
void onAsyncMethodEnds() {
Local<Value> argv[] = { Local<Value>::New(String::New("TheString")) };
this->callback->Call(Context::GetCurrent()->Global(), 1, argv);
}
....
private:
static v8::Handle<v8::Value> BeInitiator(const v8::Arguments& args) {
HandleScope scope;
Client* client = ObjectWrap::Unwrap<Client>(args.This());
client->someObject->asyncMethod(client, NULL);
return scope.Close(Boolean::New(true));
}
static v8::Handle<v8::Value> SetCallback(const v8::Arguments& args) {
HandleScope scope;
Client* client = ObjectWrap::Unwrap<Client>(args.This());
client->callback = Persistent<Function>::New(Handle<Function>::Cast(args[0]));
return scope.Close(Boolean::New(true));
}
我需要将一个 javascript 函数保存为回调,以便稍后调用它。 Client 类是另一个对象的观察者,应从 onAsyncMethodEnds 调用 javascript 回调。 不幸的是,当我调用函数“BeInitiator”时,我在回调 Call() 之前收到“总线错误:10”错误
感谢您的建议
【问题讨论】:
-
你是在同一个线程中调用它吗?
-
No.. "asyncmethod" 启动一个新线程。这个方法是我链接的一个库的一部分,它使用talk_base/thread 来运行异步操作。
标签: c++ node.js callback native bus-error