callFunction method
Implementation
@override
JsEvalResult callFunction(Pointer<NativeType> fn, Pointer<NativeType> obj) {
_ensureEngine();
final ctx = _ctx!;
final func = fn.cast<JSValue>();
final thisObj = obj.cast<JSValue>();
final jsRet = jsCall(ctx, func, thisObj, const []);
if (jsIsException(jsRet) != 0) {
jsFreeValue(ctx, jsRet);
final exception = _parseJSException(ctx);
return JsEvalResult(exception.toString(), exception, isError: true);
}
final result = _jsToDart(ctx, jsRet);
jsFreeValue(ctx, jsRet);
_maybeDrainJobs();
return JsEvalResult(
result?.toString() ?? 'null',
result,
isPromise: result is Future,
isError: result is JSError,
);
}