gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:24:52 25 4
gpt4 key购买 nike

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

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

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

作为隔离的顶层函数,这是可行的:

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));部分

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

关于 Dart/flutter : async behaviour of an Isolate's top level function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com