#include #include #include #include using namespace emscripten; class MyType { public: void RunCallback(emscripten::val callback); }; int main() { EM_ASM( let value = new Module.MyType(); value.RunCallback((e) => { console.log("Received: " + e); if (e !== "Hey") throw "Expected 'Hey', got " + e; }); ); std::cout << "done" << std::endl; } EMSCRIPTEN_BINDINGS(my_module) { register_optional(); class_("MyType") .constructor<>() .function("RunCallback", &MyType::RunCallback); }