【发布时间】:2018-10-23 18:44:45
【问题描述】:
我写了这个测试程序:
await Promise.anyof(
Promise.allof((^5).map: {start { sleep 10; say "done $_" } }),
Promise.in(5).then: { say 'ouch' }
);
sleep 10;
当第二个 promise 超时时,它会打印 'ouch' 并且 await 退出,但第一个 promise 的代码块仍在运行。再过五秒钟,它的五个进程结束并打印“完成”:
$ ./test1.p6
ouch
done 0
done 1
done 2
done 3
done 4
我试图终止第一个 Promise 并将其分配给一个变量,然后从第二个 Promise 调用 .break 方法,但它不起作用。
有没有办法杀死第一个 Promise 和它启动的其他五个子 Promise?
【问题讨论】:
标签: concurrency promise raku