使用Swift的PromiseKit:终止承诺链

使用Swift的PromiseKit:终止承诺链,第1张

概述我正在尝试将PromiseKit与 Swift一起使用.我对它并不熟悉,并且似乎没有太多关于它与Swift一起使用的信息. 我似乎无法弄清楚如何终止承诺链.只要最后一个(终端)块然后包含一个语句,一切都很好: firstly { // ...}.then { obj in self.handleResult(obj)}.catch { error in self.han 我正在尝试将PromiseKit与 Swift一起使用.我对它并不熟悉,并且似乎没有太多关于它与Swift一起使用的信息.

我似乎无法弄清楚如何终止承诺链.只要最后一个(终端)块然后包含一个语句,一切都很好:

firstly {    // ...}.then { obj in    self.handleResult(obj)}.catch { error in    self.handleError(error)}

但是,如果我尝试添加另一个语句,编译器会抱怨:

firstly {    // ...}.then { obj in    self.handleResult(obj)    self.doSomethingDifferent(obj)}.catch { error in // compiler error: Missing return in a closure expected to return 'AnyPromise'    self.handleError(error)}

显然,解决方案是返回另一个承诺,但它在终端块中没有意义.还有什么我可以做的吗?

根据 http://promisekit.org/PromiseKit-2.0-Released/,在Swift Compiler Issues部分下:

The Swift compiler will often error with then. To figure out the
issue,first try specifying the full signature for your closures:

foo.then { x in    doh()    return bar()}// will need to be written as:foo.then { obj -> Promise<Type> in    doh()    return bar()}// Because the Swift compiler cannot infer closure types very// well yet. We hope this will be fixed.// Watch out for  one-line closures though! Swift will// automatically infer the types,which may confuse you:foo.then {    return bar()}

因此,您必须将代码更改为:

firstly {    // ...}.then { obj -> Promise<WhateverTypeDoSomethingDifferentPromises> in    self.handleResult(obj)    self.doSomethingDifferent(obj)}.catch { error in    self.handleError(error)}

或者你可以使用obj – >无效阻止链条

总结

以上是内存溢出为你收集整理的使用Swift的PromiseKit:终止承诺链全部内容,希望文章能够帮你解决使用Swift的PromiseKit:终止承诺链所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1036950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存