Можно ли передать аргументы командной строки в новый изолятор от spawnUri()

При запуске нового изолята с помощью 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");
}

В другом. Дарт

main() {
  var options = new Options();
  print(options.arguments);   // prints [] when spawned from app.dart.
                              // Is it possible to supply 
                              // Options from another isolate?
}

Хотя я могу передавать данные в other.dart через его SendPort, я хочу использовать другое приложение dart, которое не было создано с обратным вызовом recievePort (например, pub.dart или любое другое приложение командной строки).

2 ответа

Решение

Насколько я могу судить, на данный момент ответа нет, и было бы сложно смоделировать передачу сообщений, потому что опции не были бы доступны в main().

Я думаю, что здесь есть два хороших запроса. Одним из них является возможность передавать опции в spawn(), чтобы скрипт мог запускать то же самое из корневого изолята или порожденного изолята.

Другая функция, которую можно использовать для реализации первой, - это способ передачи сообщений, которые обрабатываются библиотеками перед вызовом main (), так что объекты, от которых зависит main (), могут быть инициализированы с данными из порождающего изолята.

Ваш пример не звонит print(options.arguments); в other.dart используется текущий стабильный SDK.

тем не мение

spanUri("other.dart");

порождает Ури. Так как насчет spawnUri("other.dart?param=value#orViaHash"); и попробуйте найти пару парам / значение через

print(options.executable);
print(options.script);
Другие вопросы по тегам