我有一个迅速从数组返回一个字符串的函数,如果数组具有直接返回值的值,否则我需要从服务器加载它并从回调返回值,我不知道该怎么做喜欢
func getValue(idx: Int)->string {
if arrayValue.count <= 0 {
callbackfunc() { arrayValue in
return arrayValue[idx]
}
} else {
return arrayValue[idx]
}
}
但是不可能从回调中返回,有帮助吗?非常感谢你
答案 0 :(得分:0)
如您所知,您不能直接从闭包中返回值。因此,您需要在回调中处理返回的数据。这可能很复杂,但是对于一个简单的示例,您可以将数据传递回基础方法。
根据应用程序在回调运行期间可能执行的其他操作,您可能需要注意如何更新此数据以使其具有线程安全性。作为一个简单的预防措施,可能值得在主线程上执行更新:
componentWillMount(){
didFocusSubscription.remove();
}
答案 1 :(得分:0)
添加完成处理程序:
func getValue(idx: Int, completion: @escaping (String) -> Void) {
if arrayValue.count <= 0 {
callbackfunc() { arrayValue in
completion(arrayValue[idx])
}
} else {
completion(arrayValue[idx])
}
}
并命名为:
getValue(idx: 2) { result in
print(result)
}