load method

  1. @override
dynamic load()
override

加载扩展

Implementation

@override
load() {
  super.load();
  eval(_promiseJSCode, sourceURL: "promiseJSCode");
  addInterface('__onResolved', (args) {
    Console.info('__onResolved ${args.toString()}');
    try {
      Map map = jsonDecode(args[0]);
      Console.info('__onResolved: map= ${map.toString()}');
      var id = map['id'];
      var value = map['value'];
      Console.info(
        '__onResolved, type id: ${id.runtimeType}, ${id is int}, hasCompleter:${_completers.containsKey(id)}, ${value.runtimeType}',
      );
      if (id is int && _completers.containsKey(id)) {
        _completers[id]?.complete(
          value != null ? context.makeString(value) : context.makeNull(),
        );
        _completers.remove(id);
        var ret = eval(
          '__FLUJS_PROMISE_CLEAN__($id)',
          sourceURL: "FLUJS_PROMISE_CLEAN.JSCode",
        );
        Console.info('__onResolved: clean is Error: ${ret.isError()}');
      } else {
        Console.info(
          '[__onResolved] invalid arguments or donot have completer: ${id.runtimeType}',
        );
      }
    } catch (e, st) {
      // ignore: avoid_print
      Console.error(
        '[__onResolved] parse js arguments failed: ${e.toString()}, ${st.toString()}',
      );
    }
  });
  addInterface('__onRejected', (args) {
    Console.info('__onRejected ${args.toString()}');
    try {
      Map map = jsonDecode(args[0]);
      var id = map['id'];
      var value = map['value'];
      Console.info(
        '__onRejected: map= ${map.toString()}, ${value.runtimeType}',
      );
      if (id is int && _completers.containsKey(id)) {
        _completers[id]?.completeError(value);
        _completers.remove(id);
        var ret = eval(
          '__FLUJS_PROMISE_CLEAN__($id)',
          sourceURL: "FLUJS_PROMISE_CLEAN.JSCode",
        );
        Console.info('__onRejected: clean is Error: ${ret.isError()}');
      } else {
        Console.info(
          '[__onRejected] invalid arguments or donot have completer: $id, ${_completers.keys.toString()}',
        );
      }
    } catch (e, st) {
      Console.error(
        '[__onRejected] parse js arguments failed: ${e.toString()}, ${st.toString()}',
      );
    }
  });
}