非同期ノード アドオンを作成していますが、クライアントの JavaScript コールバックを呼び出す "After" 関数で HandleScope を使用する必要があるかどうかを判断するのに苦労しています。新しいスコープがある場合とない場合の例を見てきましたが、その理由についての説明はありません。次に例を示します。
void asyncWorkAfter(uv_work_t* req) {
HandleScope scope; // <-- Do you need a new scope?
const int argc = 1;
Local<Value> foo = String::New("foo");
Local<Value> argv[] = { foo };
// assume I got my callback function out of req
callback->Call(Context::GetCurrent()->Global(), argc, argv);
callback.Dispose();
// if i use a new HandleScope, what happens to argv when we go out of scope?
// Do i need to do something like a scope.Close() to copy argv to the parent scope?
}
コールバックを呼び出すときに、HandleScope が必要ですか?
新しい HandleScope を使用すると、例の argv はどうなりますか?