是的,好的人, 我遇到了奇怪的行为
异步使用隔离的顶级功能时;
您可以找到示例代码HERE,但简而言之
作为隔离的顶级功能:
String _syncHandle(int data) {
return 'done';
}
这不是:
Future<String> _syncHandle(int data) async {
return 'done';
}
有人能解释我为什么吗?
(或者,如果应该工作,为什么在我的代码中不这样做?)
先谢谢您
弗朗切斯科
...
[edit:刚刚注意到有人问过类似的问题,
尽管如此,它仍然没有答案 Call async function from Isolate function,
plus问题在github上公开
答案 0 :(得分:0)
忘记更新此:/ 如果您查看问题中链接的代码
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));部分
如果这样做,则只能发送基元,而不能发送期货, 基本上就是这样