Dart / Flutter:Isolate 顶级函数的异步行为

Dart / Flutter: async behaviour of an Isolate's top level function

好人好人, 我遇到了一个奇怪的行为

异步使用 isolate 的顶层函数时;

您可以找到示例代码 HERE,但简而言之

as 隔离的顶级函数 这有效:

String _syncHandle(int data) {
  return 'done';
}

而这不是:

Future<String> _syncHandle(int data) async {
  return 'done';
}

谁能解释一下为什么?

(或者如果应该工作,为什么不在我的代码中这样做?)

提前致谢

弗朗切斯科

...

[编辑:刚刚注意到有人提出了类似的问题,

尽管如此,它仍然没有得到答复 Call async function from Isolate function,

加上问题在 github ]

打开

忘记更新了:/ 如果您查看问题中链接的代码

isolates_logging/lib/provider/test_isolate.dart

  Future<void> _handle(int _m) async {
    final response = ReceivePort();
    isolateTest = await Isolate.spawn(_isolate, response.sendPort);
    final sendPort = await response.first as SendPort;
    final answer = ReceivePort();
    sendPort.send([_m, answer.sendPort]);
    await answer.first.then((p) { 
      _outbound.sink.add(p);});
  }

  static void _isolate(SendPort _initialReplyTo) {
    final port =  ReceivePort();
    _initialReplyTo.send(port.sendPort);
    port.listen((message) {
      final data = message[0] as int;
      final send = message[1] as SendPort;
      send.send(_syncHandle(data));
    });
  }
}

Future<String> _syncHandle(int data) async {
  return 'done';
}

注意 send.send(_syncHandle(data));部分

如果你这样做,你只能发送原语而不是期货, 基本上就是这样