从 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<Bool>
,因为在完成处理程序完成之前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