2013-03-03 14 views
5

Ich arbeite an einem Knoten-Modul, und versuche, eine Instanz einer Klasse, die ObjectWrap Unterklasse als ein Argument zu einem JavaScript-Rückruf übergeben.Wie Objekt übergeben, JavaScript-Callback in V8

In anderen Orten, die ich habe in der Lage, erfolgreich unwrap JavaScript zu der gleichen Klasse Objekte, mit:

GitCommit *commit = ObjectWrap::Unwrap<GitCommit>(args[0]->ToObject()); 

Wie könnte ich das Gegenteil tun? Ich möchte eine Instanz von GitCommit zu einem JavaScript-Rückruf zu übergeben, wie:

Local<Value> argv[] = { 
    // Error code 
    Local<Value>::New(Integer::New(0)), 
    // The commit 
    commit // Instance of GitCommit : ObjectWrap 
}; 

// Both error code and the commit are passed, JS equiv: callback(error, commit)  
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv); 

Ist das möglich? Wenn ja, bitte geben Sie mir ein Beispiel oder einen Link zu den relevanten Unterlagen?

Antwort

3

Sie schreiben also ein Knoten-Addon. Versuchen Sie:

Handle<Value> argv[] = { 
    // Error code 
    Integer::New(0), 
    // The commit 
    commit->handle_ // Instance of GitCommit : ObjectWrap 
}; 

// Both error code and the commit are passed, JS equiv: callback(error, commit)  
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv); 
+0

Vielen Dank * sehr * viel dafür! –