4

使用 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");
}

在其他.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 或任何其他命令行应用程序)。

4

2 回答 2

1

您的示例未使用当前稳定的 SDK调用print(options.arguments);other.dart 。

然而

spanUri("other.dart");

产生一个 Uri。那么,如果您可以通过以下方式找到参数/值对,如何spawnUri("other.dart?param=value#orViaHash");尝试?

print(options.executable);
print(options.script);
于 2012-07-24T09:20:47.507 回答
1

据我所知,目前的答案是否定的,并且很难通过消息传递来模拟,因为这些选项在 main() 中不可用。

我认为这里有两个很好的功能要求。一个是能够在 spawn() 上传递选项,以便脚本可以从根隔离或衍生隔离运行相同的。

另一个可用于实现第一个功能的功能是一种在调用 main() 之前传递由库处理的消息的方法,以便 main() 所依赖的对象可以使用来自生成隔离的数据进行初始化。

于 2012-07-24T20:01:09.787 回答