我知道我们用await
等待并执行任务,而不需要用async let
等待,但我不能理解这两个调用的区别:
async let resultA = myAsyncFunc()
async let resultB = await myAsyncFunc()
在我的实验中,这两个关键字的行为似乎完全相同,await
关键字在这里没有任何影响,但我恐怕错过了一些东西.
事先感谢您对此的解释.🙏🏻
Update
我正在添加一个工作样例,这样您就可以看到
func myAsyncFuncA() async -> String {
print("A start")
try? await Task.sleep(for: .seconds(6))
return "A"
}
func myAsyncFuncB() async -> String {
print("B start")
try? await Task.sleep(for: .seconds(3))
return "B"
}
async let resultA = myAsyncFuncA()
async let resultB = await myAsyncFuncB()
print("Both have been triggered")
await print(resultA, resultB)
结果:
A start // Immediately
B start // Immediately
Both have been triggered // Immediately
A B // After 6 seconds
如您所见,resultA
不会阻塞上下文,并且总等待时间是最长的等待时间.