我知道我们用
await
等待并执行任务,而不需要用 async let
等待,但我无法理解这两个调用之间的区别:
async let resultA = myAsyncFunc()
async let resultB = await myAsyncFunc()
在我的实验中,这两个似乎表现完全相同,并且
await
关键字在这里没有任何效果,但我担心我错过了一些东西。
提前感谢您对此的解释。 🙏🏻
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() 时,代码会暂停,直到异步操作完成,这确保了后续代码仅在异步操作完成后才执行。