asynchronous - Vala 异步关闭
问题描述
我正在尝试做一个异步闭包,因为我在里面调用了另一个异步函数。有些我正在尝试做这样的事情:
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 。
但是,如果您上面的示例反映了您的实际用例,那么您实际上并不需要它们,您只需要使用async_method.begin(…)
表单来调用异步方法:
void connect_on_button_click () {
some_button.connect (() => {
some_async_function.begin();
});
}
推荐阅读
- r - Redshift 加入元数据表并选择列
- elixir - 无法在 Phoenix 1.3 中生成 html
- java - 改造错误请求和 RecyclerView:没有附加适配器;跳过布局
- scala - SBT准备WAR文件,重复条目:META-INF/MANIFEST.MF
- java - 标签的 JavaFx setText
- css - 基于容器宽度的CSS变换比例
- angular - Angular 5 上的 LINE 共享插件
- sql-server - 如何停止显示“进行中”状态的 SQL 作业?
- mysql - 限制对计数无效?mysql
- google-bigquery - 使用 Appengine 将数据流式传输到 Bigquery