callFunction method

  1. @override
JsEvalResult callFunction(
  1. Pointer<NativeType> fn,
  2. Pointer<NativeType> obj
)
override

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,
  );
}