当前位置: 首页 > 知识库问答 >
问题:

如何拨打多个网络电话,只在成功后发送结果?

施赞
2023-03-14

我想要进行两个网络调用,并且只想在两个调用都成功完成时将结果发送回viewcontroller。在下面的代码中,我使用了布尔值GotCountrations&;gotocceans以了解我是否得到响应。我想移除这些布尔标志,并确保使用完成块发送结果。

func fetchCountries() {
    countries = Network call to get countries success
    gotCountries = true // Boolean
    if gotCountries && gotOcceans {
        onCompletion?(self.countries, self.occeans)
    }
}

func fetchOcceans() {
    occeans = Network call to get occeans success
    gotOcceans = true // Boolean
    if gotCountries && gotOcceans {
        onCompletion?(self.countries, self.occeans)
    }
}

共有1个答案

叶鸿
2023-03-14

对于这类情况,最好使用DispatchGroup在多个完成块完成后执行方法。下面是一个例子:

let dispatchGroup = DispatchGroup()

func fetchContriesAndOceans() {
    fetchCountries()
    fetchOcceans()
    dispatchGroup.notify(queue: .main) {
//      execute what needs to be executed after the completion of both methods here.
        onCompletion?(self.countries, self.occeans)
    }
}

func fetchCountries() {
    dispatchGroup.enter()
//    dispatchGroup.leave() // Put this line in the completion of network call
}

func fetchOcceans() {
    dispatchGroup.enter()
//    dispatchGroup.leave() // Put this line in the completion of network call
}
 类似资料:
  • 拨打电话     拨打电话给 Skype 联系人。开始通话前,需先让支援PSP™版 Skype 的音频输入设备连接PSP™主机。 从联系人名单选择拨打对象 1. 进入 Skype 的选单画面后选择(联系人)。 2. 从联系人名单中选择电话的拨打对象。 可拨打电话给登入状态为(在线)等可通话状态的联系人。 开始呼叫后,会显示对方的名字或 Skype 账号。对方回复后即可开始通话。 提示 透过 Sky

  • 问题内容: 当我用make或new调用创建新的slice或struct时: Go通过内存分配系统调用分配多少内存?它是否预分配了内存,以便后续调用不会触发新的系统调用? 我问这个问题是因为我需要在代码中频繁分配内存。我不确定是否需要自己实现一个内存分配器,还是可以依靠Go来完成肮脏的工作。如果Go确实预分配了内存,我可以自定义要分配的块大小吗? 我在Go中编写了一些实验代码,并在strace下运行

  • 问题内容: 我正在尝试拨打的电话不是使用特定号码,而是使用在变量中被调用的号码,或者至少告诉它在您的电话中提取该号码。这个在变量中被调用的数字是我使用解析器或从网站sql检索到的数字。我做了一个按钮,试图用一个函数调用存储在变量中的电话号码,但无济于事。一切都会帮助谢谢! 问题答案: 试一试: 假设电话号码在。 的返回Optional,因此使用可以确保它是(而不是)返回的。 对于Swift 3:

  • 本文向大家介绍Android拨打电话功能实例详解,包括了Android拨打电话功能实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Android拨打电话功能。分享给大家供大家参考,具体如下: 打电话是手机的一个最基本的功能,现在android智能手机非常流行,里面有多种多样的精彩的手机功能,但是android手机如何实现打电话这个基本功能呢?现以实例说明如下。首先呈上程序: res

  • 拨打普通电话(SkypeOut)     使用  Skype ,对传统的电话回线拨打电话。若要使用此机能,需先购买 Skype 点数。 1. 进入  Skype 的选单画面后,选择(拨号)。 2. 选择[国家或地区],从清单中选择国家或地区。 3. 选择[电话号码]后,输入号码并选择[确定]。 4. 选择[通话]。 对方接听后,即可开始通话。 重要 无法使用  Skype 拨打紧急电话。

  • 我在这里阅读了Twilio电话教程:https://www.fullstackpython.com/blog/make-phone-calls-python.html 与Twilio教程不同,Twilio教程确实会叫我的手机,但它只播放MP3或人工智能语音。我希望能够进行对话。有没有办法用Twilio API连接我电脑的麦克风并与自己的手机通话?我一直在网上搜索,却找不到办法。请帮忙。

  • 我正在使用下面的代码搜索带有查询参数的Tweets。这适用于Twitter V1 API,但不适用于V2,在广泛阅读了他们的API留档后,我感到困惑。 我的第一个问题是,V1和V2是否共享相同的身份验证?i、 e.假设我的endpointurl是正确的,我可以用这个代码调用V2吗?这导致了第二个问题,如果我可以用与V1相同的身份调用V2,那么正确的endpoint是什么?到目前为止,最显著的区别是

  • 问题内容: 我是新手,这个问题可能真的很愚蠢。所以请和我一起。 我有一个要通过电话重置的设备。这是我现在的样子(尚未完成) 我不太确定该打电话给我的完成电话,也不确定如何100%确保所有电话都已结束。有什么帮助吗? 问题答案: 我建议使用调度组: 每个设备都立即进入该组,但直到收到响应后才离开该组。在所有对象都离开组之前,不会调用最后的notify块。