我正在爲使用C++的node.js編寫附加組件。從node.js本地代碼調用回調
這裏的一些片段:
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」我收到「總線錯誤:10」的錯誤只是回調調用()之前
感謝諮詢
你在同一個線程中調用它嗎? – loganfsmyth
否..「asyncmethod」啓動一個新線程。這個方法是我鏈接的lib的一部分,它使用talk_base /線程來運行異步操作。 – helloIAmPau