当前位置: 首页 > 面试题库 >

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

洪鹏海
2023-03-14
问题内容

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

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

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

谢谢


问题答案:

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

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


 类似资料:
  • 有没有一种方法可以让发出数据,并且当它发出数据时(或者当它完成时)以异步方式使用该数据触发? 我的问题与此非常相似,但我试图异步调用Completable。 这是我试图实现的一个微不足道的例子: 我看到订阅映射中的Completable允许我以某种方式完成这项任务,但我不知道如何以正确的方式处理它(因为在活动中不调用此方法)。 非常感谢您的帮助,谢谢!

  • 我一直在使用discord.py重写为python编写一个音乐机器人。它通过youtube-dl下载视频,并在语音聊天中回放。我一直在努力开发一个音乐扩展,最近意识到我完全忽略了一些东西。youtube-dl的选项是同步的,而discord.py是异步的。youtube-dl在下载视频时生成子进程,而不是在当前线程上运行视频,因此它不会挂起程序。我需要在下载完成后运行的函数是coroutine,因

  • 大家好我有这样一个问题,我有2个异步功能。我只想在第一次完全结束后,运行第二次。这就是我试图做的: null null 但它并不总是起作用的,有时第二个函数的代码运行在第一个函数的代码之前,我不确定为什么,我用await强制第二个只在第一个结束之后。 我现在只想让第一个函数结束来激活第二个函数。

  • 问题内容: 在我的NodeJS代码中,我需要进行2或3个API调用,每个调用都会返回一些数据。在完成所有API调用之后,我想将所有数据收集到单个JSON对象中以发送到前端。 我知道如何使用API​​回调(下一个调用将在上一个调用的回调中发生)执行此操作,但这会很慢: 我知道您也可以通过promise做一些类似的事情,但我认为相同的概念适用于下一个调用要等到当前调用完成后才能执行的情况。 有没有一种

  • 问题内容: 我正在一个有几个无法更改的脚本的项目中。这些脚本通过AJAX更新页面。更新完成后,我需要运行一些代码。 XMLHttpRequest完成时是否会触发任何事件?(或任何XMLHttpRequest状态更改?)。 不幸的是,我无法访问用于发出请求的特定XMLHttpRequest对象。 谢谢, 问题答案: 如果没有jQuery,则可以挂钩该方法以在XHR对象被编辑时为每个XHR对象的事件附

  • 问题内容: 我想在异步for循环遍历Javascript对象的值完成执行后调用一个函数。我有以下代码 问题答案: 这可以在普通JS中完成,但是我建议使用模块,它是用于处理Node.js中异步代码的最流行的库。例如,使用: 如果要使用每次迭代的结果,则类似,但是将结果数组传递给回调的第二个参数。 如果您喜欢香草JS,则可以代替: (摘自我前段时间写的要点) 我强烈建议您使用异步库。异步很容易编写,类