升级到 Promisekit 6 后代码变得更加臃肿

问题描述

我有一些相当旧的代码,我现在必须为 Xcode 12.4 更新。我正在使用 PromiseKit 并且不得不升级代码以满足编译器的要求。现在我有点困惑/沮丧,因为我不得不添加不必要的代码以满足编译器:

如果成功连接到服务器,我的代码必须做一些事情。 请注意,我没有明确使用回调的结果,我以前在第一行中有 products -> Void 并且在第一个闭包中没有 return 语句。但是,现在我必须明确定义 loadProducts 方法返回的内容。此外,我还必须添加一个 return 语句,这对我来说也不是必需的:

  1. result -> Promise<[Product]> in
  2. return .value(result)

以前可以省略这些 in 语句,但现在我必须重新声明 loadProducts 方法的内部工作原理。

这是代码

self.service?.loadProducts().then {  result -> Promise<[Product]> in
    vc.isSigningIn = false
    vc.dismiss(animated: true){
        HUD.flash(.success,delay: 0.5)
    }
    self.saveMoc()
    self.storeCredentials(domain: domain,username: username,password: password)
    
    return .value(result)
}.catch(policy: .allErrors) { error in
    print(error)
    vc.errorString = "An error occured"
}

我可能遗漏了一些东西,但为了使用新框架编译代码而必须添加内容感觉违反直觉。

我也想知道为什么 swift 不能使用一些“推断魔法”来弄清楚这些承诺返回什么以及为什么必须重新声明这一点

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)