我正在嘗試編碼運行在promise中的3個回顯服務器,但我想知道哪個承諾正在做迴應。有沒有辦法做到這一點?perl6如何獲得承諾的具體身份?
no strict;
for 0 .. 2 -> $index {
@result[$index] = start {
$myID = $index;
say "======> $myID\n";
my $rsSocket = IO::Socket::INET.new:
localhost => 'localhost',
localport => 1234 + $index,
listen => 1;
while $rsSocket.accept -> $rsConnection {
say "Promise $myID accepted connection";
while $rsConnection.recv -> $stuff {
say "promise $myID Echoing $stuff";
$rsConnection.print($stuff);
}
$rsConnection.close;
}
}
}
await @result;
echo服務器運行正常;用「nc」進行測試;
問題是$myID
在創建承諾後變成2
,並且我無法分辨哪個承諾正在執行當前回顯。看來所有的承諾都使用$myID
;有沒有一種方法可以創建特定於單個承諾的變量?
謝謝Timbus!建議採取! – lisprogtor