猿问

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

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

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

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

谢谢


梵蒂冈之花
浏览 667回答 3
3回答

慕妹3242003

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

肥皂起泡泡

扩展Matt的答案,您可以使myMethod一个以闭包作为参数的方法:func myMethod(completionBlock: (result: String) -> ()) {    // ... code ...    somebody.doSomethingWith(someObject, asynchronousCallback: {        (thing, otherThing) in        // ... do whatever        completionBlock(thing)    })    // ... code ...}

莫回无

您能解释一下如何交接职能吗?我事先了解到,您可以在编写“调用函数”的地方运行该函数,但是就像我说的那样,该函数在另一个文件中。我现在正在处理的特定情况是,我编写了一个函数,该函数首先检查要查找的对象是否在本地数据存储中,否则,它检查服务器。由于我希望它可以在任何地方运行,因此将其放在单独的文件中。但是我仍然需要它来调用调用它的类中的函数。再次感谢。
随时随地看视频慕课网APP
我要回答