來自非同步函式的收益
為了連結非同步操作並避免回撥地獄,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 ();
}