Возврат Обещания из обработчика завершения в PromiseKit

У меня есть следующая проблема:

func doSomething() -> Promise<Bool> {

  let completionHandler = { (result: Bool) in
    // How can I fulfill the promise here -- Promise { fulfill, _ in fulfill(result) } 
  }

  someLibrary.doSomeTasks(handler: completionHandler)
  // What do I return for this function?...
}

В настоящее время я не знаю, что вернуть / как вернуть Promise<Bool> поскольку bool значение недоступно, пока не завершится обработчик завершения. someLibrary.doSomeTasks не поддерживает PromiseKit, поэтому я застрял с использованием обработчика завершения, как показано. Спасибо!

2 ответа

Это было обновлено в обещании 6 для:

func doSomething() -> Promise<Bool> {
   return Promise<Bool> { seal in 
       someLibrary.doSomeTask(handler: { value in
           seal.fullfill(value)

           // we also have seal.reject(error), seal.resolve(value, error)
       })
   }
}

Вот общая форма, чтобы делать то, что вы хотите:

func doSomething() -> Promise<Bool> {
    return Promise { fulfill, reject in 
        someLibrary.doSomeTask(handler: { value in
            fulfill(value)
        })
    }
}
Другие вопросы по тегам