【问题标题】:Return multiple values from async function从异步函数返回多个值
【发布时间】:2014-09-03 01:42:56
【问题描述】:

我在编写一个使用“out”返回多个值的“异步”函数时遇到了麻烦。

public async void getArticle(int articleID, out string html, out string title, out string author, out string url)
{

}

这足以触发错误。只要关键字“async”是函数头的一部分,我在调用函数时就会收到以下错误:

error: Argument 2: Cannot convert from `string?' to `GLib.AsyncReadyCallback?'

这就是调用的样子

getArticle(15752, out html, out title, out author, out url);

如果我删除关键字“异步”,一切都会重新开始工作。这在 vala 中是否可行,还是我必须返回一个包含所有 4 个字符串的对象才能使其工作?

提前感谢您的帮助

最好的问候,简

【问题讨论】:

    标签: asynchronous parameters vala


    【解决方案1】:

    你必须在异步方法的末尾使用out参数:

    getArticle.begin(15752, (obj, result) => {
      getArticle.end(result, out html, out title, out author, out url);
    }
    

    【讨论】:

    • thx,但是如何从这个 lambda 表达式中获取值?类似“getArticle.begin(15752, (obj, result, html, title, author, url) => { getArticle.end(result, out html, out title, out author, out url); });”不工作
    • 函数执行完成后会调用回调,但会立即调用 begin() 调用之后的下一行。无法访问输出变量,因为这些值不一定存在。请查看wiki.gnome.org/Projects/Vala/Tutorial#Asynchronous_Methods 了解更多信息。
    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2020-09-12
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2018-08-12
    相关资源
    最近更新 更多