来自异步函数的收益
为了链接异步操作并避免回调地狱,Vala 支持 yield
语句。
与异步调用一起使用时,它将暂停当前协同程序,直到调用完成并提取结果。
单独使用,yield
暂停当前的协同程序,直到通过调用其源回调唤醒它。
public async int foo_async () {
yield; // pause the coroutine
Timeout.add_seconds (5, bar_async.callback); // wakeup in 5 seconds
return ret + 10;
}
public async int bar_async () {
var ret = yield foo_async ();
}