如果我必须一直等待,那么异步函数有什么意义?

问题描述 投票:0回答:1

这是我的询问。我来自 JS 和 dart 背景,其中 async/await 函数调用简单直接,就像我可以在同步上下文中调用异步函数(无需等待),并选择将 wait 放在任何其他异步上下文中,具体取决于是否返回结果任务是我关心的事情。但在 swift 中,我看到所有异步函数调用都可以在异步上下文或任务中完成,并且我需要等待异步函数完成,即使我不需要它在块的其余部分中的值。这里有一个快速的例子来解释

Task {
    // time consuming task
    await uploadLogsToServer()
    // small async task that don't require to await for the previous function to finish
    await doSomeLightWork()
}

我知道将其转换为两个任务的解决方案或使用一些更好的方法来处理这个问题,但我需要理解为什么这种方法如此迅速,否则我在这里错过了一些大东西。

swift asynchronous async-await
1个回答
0
投票

让两个

await
在单个任务上下文中同时运行的简单方法是

    Task {
        // time consuming task
        async let task1: Void = uploadLogsToServer()
        // small async task that don't require to await for the previous function to finish
        async let task2: Void = doSomeLightWork()
        _ = (await task1, await task2)
    }
© www.soinside.com 2019 - 2024. All rights reserved.