Tag: Asyncawait

在Swift中同步异步

我确定您已经遇到过异步任务,并且必须使它们同步执行的情况,因为它们之间存在依赖关系。 想象一下安排会议的场景 调用一些登录API以获得令牌 获取特定时间的可用人员列表 得到一个人的细节 与有空人员开会 在您大声疾呼这只是API的不良示例之前,请放心,我同意您的观点。 但这是我们现实太多次了。 但是,有一个开箱即用的解决方案: 在队列上 使用 操作 和链接相关任务! 这听起来像是我们要实现的教科书示例。 让我们使用操作并使其起作用: 我们可以看到我们有一个Operation SumOfTwoAsyncOperations 。 我们可以清楚地看到它的业务逻辑在全局后线程队列上的异步调用中执行业务逻辑。 这里我们有一个函数sumOfTwoAsyncOperations ,它接受4个数字,并在operation1添加number1和number2在operation1添加number3和number4 。 我们可以看到,我们还创建了BlankOperation类型的“虚拟” operation3 BlankOperation ,其唯一目的是确认最后执行的操作,该operation3应为operation3并将消息打印到控制台中。 因此,如果现在调用此函数: 使用参数4和5,那么我们期望在控制台中获得以下输出: 运算1之和4 + 4 = 8 运算2总和5 + 5 = 10 操作2完成! 好吧..不! 我们得到这个: 操作2完成! 运算2总和5 + 5 = 10 运算1之和4 + 4 = 8 我们得到相反的顺序,但是即使那样也不能保证。 实际上,我们无法真正控制结果。 如果我们还记得本文中的讨论,则提到了依赖性管理,而其他一些操作并非完全免费或完全免费。 […]