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

Posted

技术标签:

【中文标题】PromiseKit 如何将“when(resolved)”作为承诺返回?【英文标题】:PromiseKit how to return "when(resolved)" as a promise? 【发布时间】:2017-10-22 23:23:29 【问题描述】:

我有一系列看起来像这样的函数:

func getA() -> Promise<Void> 
  // code


func getB() -> Promise<Void> 
  // code


func getC() -> Promise<Void> 
  // code

我想在所有这些都完成后返回一个 Promise。这是我尝试过的:

func getStuff() -> Promise<[Result<Void>]> 
  return when(resolved: [getA(), getB(), getC()])

但我收到编译错误:'Result' is ambiguous for type lookup in this context。我怎样才能做到这一点?

【问题讨论】:

This answer 可能会有所帮助。 【参考方案1】:
func getStuff() -> Promise<[PromiseKit.Result<Void>]> 
    return when(resolved: [getA(), getB(), getC()])

【讨论】:

【参考方案2】:

在你的代码中有几个名为 Result 的东西,你需要告诉 Swift 在这种情况下 Result 指的是 PromiseKit.Result 或使用 Resolution 假设它没有在命名空间中并且你没有关心相关的ErrorConsumptionToken。

func getStuff() -> Promise<[Resolution<Void>]> 
  return when(resolved: [getA(), getB(), getC()])

【讨论】:

以上是关于PromiseKit 如何将“when(resolved)”作为承诺返回?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PromiseKit 6.3 返回 Promise<JSON>

PromiseKit入门

如何使用 PromiseKit/照片?

PromiseKit:如何在 ObjC 中进行重试/轮询?

如何使用 PromiseKit 重构快速回调以承诺

将 PromiseKit 转换为 Signal 和 SignalProducer