我有一个要转换为Promise<T>Guarantee<Bool>,其中true表示承诺已兑现,而false则被拒绝。

我设法达到使用

  return getPromise()
    .map { _ in true }
    .recover { _ in Guarantee.value(false) }


我想知道是否有更整洁的方法来做到这一点。

最佳答案

您可以按以下用法扩展promise以方便使用

extension Promise {

    func guarantee() -> Guarantee<Bool> {
        return Guarantee<Bool>(resolver: { [weak self] (body) in
            self?.done({ (result) in
                body(true)
            }).catch({ (error) in
                body(false)
            })
        })
    }
}


用法:

// If you want to execute a single promise and care about success only.
getPromise().guarantee().done { response in
    // Promise success handling here.
}

// For chaining multiple promises
getPromise().guarantee().then { bool -> Promise<Int> in
        return .value(20)
    }.then { integer -> Promise<String> in
        return .value("Kamran")
    }.done { name in
        print(name)
    }.catch { e in
        print(e)
}

09-27 13:05