Optimize emit signature

This commit is contained in:
Luis Blanco 2019-08-22 23:14:42 +03:00
parent 96b753542f
commit 7e7b4dc3e9
1 changed files with 31 additions and 2 deletions

View File

@ -426,7 +426,6 @@ inline void consoleLog(Napi::Env env, const std::string &message) {
inline void eventEmit(
Napi::Env env,
Napi::Object that,
const std::string &name,
int argc = 0,
@ -437,6 +436,8 @@ inline void eventEmit(
return;
}
Napi::Env env = that.Env();
Napi::String eventName = JS_STR(name);
Napi::Function thatEmit = that.Get("emit").As<Napi::Function>();
@ -446,7 +447,35 @@ inline void eventEmit(
args.push_back(napi_value(argv[i]));
}
thatEmit.Call(napi_value(that), args);
thatEmit.Call(that, args);
}
inline void eventEmitAsync(
Napi::Object that,
const std::string &name,
int argc = 0,
const Napi::Value *argv = nullptr,
Napi::AsyncContext ctx = nullptr
) {
if ( ! that.Has("emit") ) {
return;
}
Napi::Env env = that.Env();
Napi::String eventName = JS_STR(name);
Napi::Function thatEmit = that.Get("emit").As<Napi::Function>();
std::vector<napi_value> args;
args.push_back(napi_value(eventName));
for (int i = 0; i < argc; i++) {
args.push_back(napi_value(argv[i]));
}
thatEmit.MakeCallback(that, args, ctx);
}