快速返回回调结果

时间:2019-11-26 16:08:33

标签: swift

我有一个迅速从数组返回一个字符串的函数,如果数组具有直接返回值的值,否则我需要从服务器加载它并从回调返回值,我不知道该怎么做喜欢

func getValue(idx: Int)->string {
    if arrayValue.count <= 0 {
        callbackfunc() { arrayValue in 
        return arrayValue[idx]
       }
    } else {
      return arrayValue[idx]
    }
}

但是不可能从回调中返回,有帮助吗?非常感谢你

2 个答案:

答案 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)
}