PromiseKit 6 中 firstly 的合成器

Posted

技术标签:

【中文标题】PromiseKit 6 中 firstly 的合成器【英文标题】:Synthax of firstly in PromiseKit 6 【发布时间】:2018-03-01 11:36:09 【问题描述】:

我想使用 PromiseKit 中的这个方法,但不知道如何编写propper synthax :x

public func firstly<U: Thenable>(execute body: () throws -> U) -> Promise<U.T> 
do 
    let rp = Promise<U.T>(.pending)
    try body().pipe(to: rp.box.seal)
    return rp
 catch 
    return Promise(error: error)

 firstly 
           return someMethodWhichReturnsPromise()
        .then
    
 ...

我该如何调用它? 代码来自:https://github.com/mxcl/PromiseKit/blob/master/Sources/firstly.swift

【问题讨论】:

【参考方案1】:

PromiseKit“firstly”用法的基本示例:

func someMethodWhichReturnsPromise() -> Promise<Int> 

    // return promise


firstly 

    someMethodWhichReturnsPromise()

.then 

    // Execute more logic here after 'firstly' block completes

.catch 

    // handle error if you need to
    handle(error: $0)

【讨论】:

不幸的是不是这个,因为它调用了想要使用 Guranatee 的方法。我需要使用使用 Thenable 的方法 你能提供一个代码示例来说明你想要做什么吗? @Marlen 假设您的“someMethodWhichReturnsPromise()”是有效的,以上应该可以工作。也许把你的“回报”也去掉。 func add(a:Int, b:Int) -> Promise return Promise seal in if a > b seal.fulfill(2) else seal.reject(NSError (domain: "aa", code: 43, userInfo: nil)) Like this

以上是关于PromiseKit 6 中 firstly 的合成器的主要内容,如果未能解决你的问题,请参考以下文章

PromiseKit 6.0 迁移

在 PromiseKit 6 中正确链接多个 Promise

如何在 PromiseKit 6 中使用循环?

使用 PromiseKit 6 在 Swift 4.2 中缓存

PromiseKit 6:如何创建多个并发 Promise 并将它们各自的结果分组到一个数组中?

Xcode中奇怪的promiseKit 6语法行为