“async let”和“async let wait”之间的区别

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

我知道我们用

await
等待并执行任务,而不需要用
async let
等待,但我无法理解这两个调用之间的区别:

async let resultA = myAsyncFunc()
async let resultB = await myAsyncFunc()

在我的实验中,这两个似乎表现完全相同,并且

await
关键字在这里没有任何效果,但我担心我错过了一些东西。

提前感谢您对此的解释。 🙏🏻

swift async-await concurrency
1个回答
0
投票
async let resultA = myAsyncFunc()
async let resultB = await myAsyncFunc() 

看起来很相似,但两者之间有一个至关重要的区别。

async let resultA = myAsyncFunc(): 

此语法启动异步函数 myAsyncFunc(),但不等待它完成。它立即继续执行下一行代码。变量 resultA 被分配了一个代表当前异步操作的任务,而不是操作的实际结果。

async let resultB = await myAsyncFunc(): 

此语法也会启动异步函数 myAsyncFunc(),但使用await 关键字暂停当前任务的执行,直到 myAsyncFunc() 完成。一旦 myAsyncFunc() 完成,resultB 就会被分配异步操作的实际结果。 主要区别在于这些行之后代码的行为:

使用 async let resultA = myAsyncFunc(),代码在异步操作开始后立即继续执行,这可能会导致后续任务同时执行。

使用 async let resultB = wait myAsyncFunc() 时,代码会暂停,直到异步操作完成,这确保了后续代码仅在异步操作完成后才执行。

© www.soinside.com 2019 - 2024. All rights reserved.