5 template<
class Return,
class... Params>
7 auto js_function = v8toolkit::get_value_as<v8::Function>(value);
10 auto context = isolate->GetCurrentContext();
11 auto shared_global_function = std::make_shared<v8::Global<v8::Function>>(isolate, js_function);
12 auto shared_global_context = std::make_shared<v8::Global<v8::Context>>(isolate, context);
14 return [isolate, shared_global_function, shared_global_context](Params... params) ->
Return {
15 v8::Locker locker(isolate);
16 v8::HandleScope sc(isolate);
17 auto context = shared_global_context->Get(isolate);
19 assert(!context.IsEmpty());
21 shared_global_function->Get(isolate),
23 std::tuple<Params...>(params...));
24 return CastToNative<Return>()(isolate, result);
internal::ReturnAction< R > Return(R value)