如何在关闭完成后等待返回值。
示例:
func testmethod() -> String {
var abc = ""
/* some asynchronous service call block that sets abc to some other value */ {
abc = "xyz"
}
return abc
}
现在我希望方法只在为变量设置xyz
值而不是空字符串后返回。
如何实现这一目标?
答案 0 :(得分:4)
可能 (但请确保这是您真正想要的。)。
在资源可用之前,您必须使用阻止线程的内容,例如信号量。
var foo: String {
let semaphore = DispatchSemaphore(value: 0)
var string = ""
getSomethingAsynchronously { something in
string = something
semaphore.signal()
}
semaphore.wait()
return string
}
请记住,在
getSomethingAsynchronously
完成之前,您正在处理的主题将被阻止。
答案 1 :(得分:0)
这绝对不可能,因为它不是异步任务的工作方式。
你能做的就是这样:
func testmethod(callback: (abc: String) -> Void) {
asyncTask() {
callback(abc: "xyz")
}
}
度过愉快的一天。