【问题标题】:Returning a Promise from a completion handler in PromiseKit从 PromiseKit 中的完成处理程序返回 Promise
【发布时间】:2017-11-16 09:14:25
【问题描述】:

我有以下问题:

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&lt;Bool&gt;,因为在完成处理程序完成之前bool 值不可用。 someLibrary.doSomeTasks 不支持 PromiseKit,所以我坚持使用如图所示的完成处理程序。谢谢!

【问题讨论】:

    标签: ios swift asynchronous promise promisekit


    【解决方案1】:

    这已在 promiseKit 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)
           })
       }
    }
    

    【讨论】:

      【解决方案2】:

      这里是做你想做的事情的一般形式:

      func doSomething() -> Promise<Bool> {
          return Promise { fulfill, reject in 
              someLibrary.doSomeTask(handler: { value in
                  fulfill(value)
              })
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-24
        • 2015-01-07
        • 2019-01-24
        • 1970-01-01
        • 2021-07-31
        相关资源
        最近更新 更多