Можно ли передать аргументы командной строки в новый изолятор от 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);