Vala 异步闭包
Vala async closure
我正在尝试创建一个异步闭包,因为我在其中调用了另一个异步函数。有些我正在尝试做这样的事情:
void connect_on_button_click () {
some_button.connect (() => {
var val = yield some_async_function ();
// Do something with the value...
});
}
但是vala编译器报错。
所以目前我的解决方案是传递一个定义的异步函数,例如:
async void on_button_click () {
var val = yield some_async_function ();
// Do something with the value...
}
void connect_on_button_click () {
some_button.connect (on_button_click);
}
但我想知道是否可以将闭包标记为异步,这样我就不必创建另一个函数了?
异步 lambdas/closures/delegates 当前 aren't supported。
但是,如果您上面的示例反映了您的实际用例,那么您实际上并不需要它们,您只需要使用 async_method.begin(…)
form 来调用异步方法:
void connect_on_button_click () {
some_button.connect (() => {
some_async_function.begin();
});
}
我正在尝试创建一个异步闭包,因为我在其中调用了另一个异步函数。有些我正在尝试做这样的事情:
void connect_on_button_click () {
some_button.connect (() => {
var val = yield some_async_function ();
// Do something with the value...
});
}
但是vala编译器报错。 所以目前我的解决方案是传递一个定义的异步函数,例如:
async void on_button_click () {
var val = yield some_async_function ();
// Do something with the value...
}
void connect_on_button_click () {
some_button.connect (on_button_click);
}
但我想知道是否可以将闭包标记为异步,这样我就不必创建另一个函数了?
异步 lambdas/closures/delegates 当前 aren't supported。
但是,如果您上面的示例反映了您的实际用例,那么您实际上并不需要它们,您只需要使用 async_method.begin(…)
form 来调用异步方法:
void connect_on_button_click () {
some_button.connect (() => {
some_async_function.begin();
});
}