是的,好的人,我的行为很怪异
异步使用隔离的顶级功能时;
您可以在此处找到示例代码,但总之
作为 隔离的顶级功能, 它的工作原理是:
String _syncHandle(int data) { return 'done'; }
这不是:
Future<String> _syncHandle(int data) async { return 'done'; }
谁能解释我为什么?
(或者如果应该工作,为什么在我的代码中不这样做?)
先感谢您
弗朗切斯科
…
[编辑:刚注意到有人问过类似的问题,
尽管如此,它仍然无法解决 从隔离功能调用异步功能,
加上在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)); 部分
如果这样做,则只能发送基元,而不能发送期货,基本上就是这样