我正在尝试使用isolate.addOnExitListener(...) 来跟踪isolate 当前是否正在运行(以及将来是否出错)。但是,以下代码片段并未按我的预期工作:
items.forEach((name, item) async {
Isolate isolate = await Isolate.spawnUri(...);
item.status = "running";
ReceivePort receivePort = new ReceivePort();
isolate.addOnExitListener(receivePort.sendPort);
receivePort.listen((message){
if (message == null) {
print("Item exited: ${item.name}");
item.status = "stopped";
}
});
});
Run Code Online (Sandbox Code Playgroud)
“items”映射包含 3 个值,每个值都有不同的名称:item1、item2、item3
当我运行此代码时,我得到的唯一输出是:“Item exited: item3”
我期望以下输出(不一定按顺序,因为隔离是异步的):“项目退出:项目1”“项目退出:项目2”“项目退出:项目3”
这是在隔离区中运行的代码:
import 'dart:io';
main(List args) {
print('Hello world: standard out!');
stderr.writeln('Hello world: standard error!');
}
Run Code Online (Sandbox Code Playgroud)
似乎关闭正在丢失。我在这里做错了什么吗?有没有更好的方法来跟踪隔离状态?
提前致谢!
是否可以将 HTTP2 Push 与 Google Cloud CDN 结合使用?如果是这样,它是否足够聪明来理解并使用 Push-manifest.json 来执行此操作?