使用spawnUri()启动新的隔离时,是否可以将命令行参数传递给新的隔离?
例如:命令行:
dart.exe app.dart "Hello World"
在app.dart
中#import("dart:isolate");
main() {
var options = new Options();
print(options.arguments); // prints ["Hello World"]
spawnUri("other.dart");
}
在other.dart
中main() {
var options = new Options();
print(options.arguments); // prints [] when spawned from app.dart.
// Is it possible to supply
// Options from another isolate?
}
虽然我可以通过其SendPort将数据传递给other.dart,但我想要的具体用途是使用另一个尚未使用recievePort回调创建的dart应用程序(例如pub.dart或任何其他命令行)应用程序)。
答案 0 :(得分:1)
您的示例不会使用当前稳定的SDK在 other.dart 中调用print(options.arguments);
。
然而
spanUri("other.dart");
产生一个乌里。那么spawnUri("other.dart?param=value#orViaHash");
怎么样,并尝试通过
print(options.executable);
print(options.script);
答案 1 :(得分:1)
据我所知,答案目前是否定的,并且很难通过消息传递进行模拟,因为这些选项在main()中不可用。
我认为这里有两个很好的功能请求。一种是能够在spawn()上传递选项,以便脚本可以从根隔离或生成的隔离中运行相同的。
另一个可用于实现第一个特性的功能是在调用main()之前传递由库处理的消息的方法,以便main()所依赖的对象可以使用来自产生的数据进行初始化隔离。