Asks the isolate to send response
on responsePort
when it terminates.
The isolate will send a response
message on responsePort
as the last
thing before it terminates. It will run no further code after the message
has been sent.
Adding the same port more than once will only cause it to receive one message, using the last response value that was added.
If the isolate is already dead, no message will be sent.
If response
cannot be sent to the isolate, then the request is ignored.
It is recommended to only use simple values that can be sent to all
isolates, like null
, booleans, numbers or strings.
Since isolates run concurrently, it's possible for it to exit before the
exit listener is established, and in that case no response will be
sent on responsePort
.
To avoid this, either use the corresponding parameter to the spawn
function, or start the isolate paused, add the listener and
then resume the isolate.
Source
/* TODO(lrn): Can we do better? Can the system recognize this message and
* send a reply if the receiving isolate is dead?
*/
external void addOnExitListener(SendPort responsePort, {Object response});