Я занимаюсь созданием веб-приложения, написанного на Dart, которое требует создания независимых путей выполнения, также написанных на Dart. (Если бы мы не работали в браузере, я бы назвал их «потоками».)
Обычно я бы использовал изоляты Dart (очень надежные) для выполнения этой задачи, но я ограничен тем, что мне нужно иметь возможность произвольно завершить любой из этих «потоков» в любое время без их сотрудничества.
Если кому-то интересно, это потому, что в этих «потоках» должен запускаться ненадежный сторонний код, и мне нужно иметь возможность завершать их, если они не отвечают, а также по другим причинам.
Насколько я понимаю, с помощью dart:isolate это невозможно. (Правильно?)
Во всяком случае, мне удалось скомпилировать некоторый код Dart в Javascript с помощью dart2js и выполнить его в Worker
, но я не знаю, как правильно вызвать функцию postMessage и ответить на событие onmessage, как в JS. Я немного возился с внутренностями dart2js и сумел настроить его (в частности, материал js_backend), чтобы я мог выполнять функцию postMessage
из своего кода, но отвечать на событие onmessage
с помощью обработчика Dart я не понимаю. работы dart2js.
Я просмотрел библиотеку js.dart, но она работает путем создания тегов script на странице, а это, очевидно, невозможно в воркере.
Я знаю, что это действительно странный вариант использования, но кто-нибудь знает, как я могу использовать внутренности dart2js, чтобы отвечать и отвечать на сообщения работнику?