
348
|
第
18
章
18.3 Promise
Promise
是在一段时间以后生成某个结果的一些代码,而且这段时间可能不短。它会
调度另一个线程完成这个工作,而程序的其余部分仍继续运行。这些正是
Perl 6
并发
性的基础,它们会为你完成大部分艰巨的工作。
每个
Promise
都有一个状态,可能在等待运行、正在运行或者已经完成。它的完成
方式决定了它的状态:一个
Promise
成功时状态就是
Kept
,失败时状态为
Broken
。
如果正在工作,状态则是
Planned
。
简单的
Promise
是一个计时器。
.in
方法会建立一个
Promise
,它会保持到你指定的
秒数:
my $five-seconds-from-now = Promise.in: 5;
loop {
sleep 1;
put "Promise status is: ", $five-seconds-from-now.status;
}
开始时,
Promise
的状态是
Planned
。(大约)
5
秒后,这个
Promise
转换为
Kept
。
这时你就能知道已经过去了
5
秒:
Promise status is: Planned
Promise status is: Planned
Promise status is: Planned
Promise status is: Planned
Promise status is: Kept
Promise status is: Kept
...
不需要持续不断地检查
Promise
。可以使用
.then
指定转换为
kept
状态时要运行的 ...