我正在尝试通过来自 react-native 的 Bridge 来实现 Amazon FireTV 的代码。我的目标是向远程播放器发送信号,然后解析 RCTPromiseResolveBlock 以便在我的 javascript 中等待该函数。
@objc func fling(_ options: NSDictionary, _ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
let player = getDeviceFromUuid(uuid:uuid) // instance of RemoteMediaPlayer
// ... more code
let bftask = player?.setMediaSourceToURL(
url,
metaData:metaData,
autoPlay:true,
andPlayInBackground:false)
bftask?.continue({ (task:BFTask) -> Void in
if task.error != nil {
reject() // <-- These are "non-escaping parameters captured in an escaping closure"
} else {
resolve() // <--
}
})
上面的代码抛出Escaping closure captures non-escaping parameter
. 我如何允许拒绝和解决在关闭中可用?或者更广泛地说,我如何执行异步请求setMediaSourceToURL
,等待它完成,然后解决承诺块?
作为参考,BFTask 是https://github.com/facebookarchive/Bolts-ObjC的一个工件。它的界面建议如下:
我期待着你们,IOS 世界的奇才。