ios - 如何在返回值之前等待关闭完成

标签 ios swift asynchronous closures

如何在关闭完成后等待返回值。

例子:

func testmethod() -> String {
   var abc = ""
   /* some asynchronous service call block that sets abc to some other value */ {
      abc = "xyz"
   }
   return abc 
}

现在我希望该方法仅在为变量而非空字符串设置了 xyz 值后返回。

如何实现?

最佳答案

这是可能的 (但是请确保这是您真正想要的。)

您必须使用一些东西来阻塞线程直到资源可用,例如信号量

var foo: String {
    let semaphore = DispatchSemaphore(value: 0)
    var string = ""

    getSomethingAsynchronously { something in
        string = something
        semaphore.signal()
    }

    semaphore.wait()
    return string
}

Bare in mind that the thread you are working on will be blocked until the getSomethingAsynchronously is done.

关于ios - 如何在返回值之前等待关闭完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221966/

相关文章:

android - 如何确保应用程序处于后台模式时 Flutter 进程不会被终止

ios - 如何在共享扩展的帮助下获取图像完整数据并共享图像?

arrays - 如何仅映射非空值?

swift - 捕获列表 : reference to class instance or initialized variable?

javascript - 等到 Firebase 读取列表完成后再返回记录数组

ios - SIGABRT - 目标解析推送通知

ios - UIView、Swift 上的深度页面转换

javascript - Node : res. 下载下载空压缩文件夹

c# - 异步功能内的错误处理

ios - NSNotification 找不到选择器