Я пытаюсь реализовать код Amazon FireTV через Bridge от реактивной системы. Моя цель - отправить сигнал удаленному плееру, а затем разрешить 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 мира.