一尘不染

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

swift

总的来说,我对Swift和Xcode还是比较陌生,并且发现很多困难要设法解决。

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

我读过闭包可能对此有所帮助,但是我发现那里的语法非常困难,对它的解释将不胜感激。但是任何方式都将非常有帮助。

谢谢


阅读 188

收藏
2020-07-07

共1个答案

一尘不染

好了,您只需在异步回调 的末尾 调用该函数。那就是异步回调结束的时候-异步回调中的所有其他东西都结束了!因此,例如:

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

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

例如:

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 ...
}
2020-07-07