从 PromiseKit 中的完成处理程序返回 Promise

Posted

技术标签:

【中文标题】从 PromiseKit 中的完成处理程序返回 Promise【英文标题】:Returning a Promise from a completion handler in PromiseKit 【发布时间】: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,所以我坚持使用如图所示的完成处理程序。谢谢!

【问题讨论】:

【参考方案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)
        )
    

【讨论】:

以上是关于从 PromiseKit 中的完成处理程序返回 Promise的主要内容,如果未能解决你的问题,请参考以下文章

While Loop 在 Promisekit 完成运行并在 Swift 中返回正确的值之前递增并重新运行

从 PromiseKit/Alamofire 返回一个 Promise

PromiseKit 如何将“when(resolved)”作为承诺返回?

尝试从完成处理程序中的响应对象返回字符串[重复]

重新定义外部块(promiseKit)

PromiseKit pod 安装正确,但 import PromiseKit 返回错误?