Swift 如何在完成任务后解决RCTPromiseResolveBlock

Swift 如何在完成任务后解决RCTPromiseResolveBlock,swift,react-native,react-native-ios,fling,Swift,React Native,React Native Ios,Fling,我试图通过react native的一个桥来实现Amazon FireTV的代码。我的目标是向远程播放器发送一个信号,然后解析RCTPromiseResolveBlock,以便在javascript中等待函数 @objc func fling(_ options: NSDictionary, _ resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void { let player =

我试图通过react native的一个桥来实现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() // <-- 
    }
  })
@objc func fling(u选项:NSDictionary,uu解析:RCTPromiseResolveBlock,拒绝器拒绝:RCTPromiseRejectBlock)->Void{
let player=getDeviceFromUuid(uuid:uuid)//RemoteMediaPlayer的实例
//…更多代码
设bftask=player?.setMediaSourceToURL(
网址,
元数据:元数据,
自动播放:对,
和播放背景:假)
bftask?.continue({(任务:bftask)->中的Void
如果task.error!=nil{

reject()//好的。只需在参数中添加
@escaping

@objc func fling(_ options: NSDictionary, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
...