我不明白为什么该程序有效:
my $supply = Supply.interval: 1;
react {
whenever $supply { put "Got $^a" }
whenever Promise.in(5) { put 'Timeout!'; done }
}
END put 'Ending…'
Run Code Online (Sandbox Code Playgroud)
打印此:
Got 0
Got 1
Got 2
Got 3
Got 4
Timeout!
Ending…
Run Code Online (Sandbox Code Playgroud)
并正确退出,而这一步:
my $supply = (1, 1, * + * … ?).Supply;
react {
whenever $supply { put "Got $^a"; sleep 1 }
whenever Promise.in(5) { put 'Timeout!'; done }
}
END put 'Ending…'
Run Code Online (Sandbox Code Playgroud)
版画
Got 1
Got 1
Got 2
Got 3
Got 5
Timeout!
Run Code Online (Sandbox Code Playgroud)
但随后挂起,不输出“ Ending…”;在这种情况下,“完成”不够吗?
如果我将“完成”替换为“退出”,则程序可以正常工作并退出。