在Swift中等待C#异步

nor*_*r0x 6 c# closures asynchronous async-await swift

我目前正在使用中的闭包和链接完成Swift。我非常熟悉and 的C#风格,因此我想知道如何将以下代码段从翻译为。asyncawaitC#Swift

public async Task SomeFunction(string inputString)
{
    var first = await GetFirstVariableAsync(inputString);
    var second = await GetSecondVariableAsync(first);

    if (second == "some condition")
    {
        first = await GetFirstVariableAsync(inputString);
        var second = await GetSecondVariableAsync(first);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否Swift具有类似的构造,例如await,以等待函数完成而不必嵌套多个完成块?

谢谢

Ahm*_*d F 2

如果我没记错的话,你要找的是:

串行调度队列:

串行队列(也称为私有调度队列)按照任务添加到队列的顺序一次执行一个任务。当前正在执行的任务在由调度队列管理的不同线程上运行(该线程可能因任务而异)。串行队列通常用于同步对特定资源的访问。您可以根据需要创建任意数量的串行队列,并且每个队列与所有其他队列同时运行。换句话说,如果您创建四个串行队列,每个队列一次仅执行一项任务,但最多仍可以同时执行四个任务,每个队列执行一个任务。有关如何创建串行队列的信息,请参阅创建串行调度队列。

斯威夫特3:

let serialQueue = DispatchQueue(label: "serialQueue")

serialQueue.sync {
    print("running first task")
}

serialQueue.sync {
    print("I will wait the first task and then I'll do my own task")
}
Run Code Online (Sandbox Code Playgroud)