仅在异步函数完成执行后运行代码

Aco*_*oop 8 asynchronous ios parse-platform swift

我对Swift和Xcode一般都比较新,我发现很难解决这个问题.

我正在开发一个利用Parse.com后端服务器的应用程序.为了不阻塞主线程,每当应用程序从服务器下载任何内容时,它都是异步完成在不同的线程上完成的.然而,其余代码继续在主线程上执行,并且当它应该从服务器获得的数据尚未下载时它崩溃.我想知道如何在异步函数完成后调用函数来运行,并且必须对单独文件中的函数进行此操作.

我读到闭包可能有助于此,但我发现语法非常困难,并且将非常感谢解释.但任何方式都会非常有帮助.

谢谢

mat*_*att 13

好吧,你只需在异步回调结束时调用该函数.那是异步回调结束的时候 - 异步回调中的其他所有内容都已完成!所以,例如:

func myMethod() {
    // ... code ...
    somebody.doSomethingWith(someObject, asynchronousCallback: {
        (thing, otherThing) in
        // ... do whatever
        // --> CALL THE FUNCTION!
    })
    // ... code ...
}
Run Code Online (Sandbox Code Playgroud)

如果问题是,你不知道叫什么功能,你可以配置你周围的功能/对象,以便有人能交出你的函数,而那么你在我说的"调用函数"在上面的斑点叫什么.

例如:

func myMethod(f:() -> ()) { // we receive the function as parameter
    // ... code ...
    somebody.doSomethingWith(someObject, asynchronousCallback: {
        (thing, otherThing) in
        // ... do whatever
        // --> CALL THE FUNCTION, by saying:
        f()
    })
    // ... code ...
}
Run Code Online (Sandbox Code Playgroud)