使用Swift的PromiseKit:终止承诺链
发布时间:2020-12-14 05:32:51 所属栏目:百科 来源:网络整理
导读:我正在尝试将PromiseKit与 Swift一起使用.我对它并不熟悉,并且似乎没有太多关于它与Swift一起使用的信息. 我似乎无法弄清楚如何终止承诺链.只要最后一个(终端)块然后包含一个语句,一切都很好: firstly { // ...}.then { obj in self.handleResult(obj)}.cat
我正在尝试将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部分下:
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 – >无效阻止链条 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |