收集一系列成功的承诺
Collect array of successful promises
我在 Swift 中使用 PromiseKit 3.0,并且我有一系列承诺 [Promise<Int>]
。我想将所有成功的承诺收集到一个承诺中。 Promise<[Int]>
.
when
和 join
都拒绝,即使其中一个承诺被拒绝。根据文档,我应该能够使用 join
并且错误将包含一个已完成值的数组,但在 Swift 中,错误包含传入的所有承诺,而不是实现的值。
如有任何帮助,我们将不胜感激。
我明白了,我现在需要一个新功能:
https://gist.github.com/dtartaglia/2b19e59beaf480535596
/**
Waits on all provided promises.
`any` waits on all provided promises, it rejects only if all of the promises rejected, otherwise it fulfills with values from the fulfilled promises.
- Returns: A new promise that resolves once all the provided promises resolve.
*/
public func any<T>(promises: [Promise<T>]) -> Promise<[T]> {
guard !promises.isEmpty else { return Promise<[T]>([]) }
return Promise<[T]> { fulfill, reject in
var values = [T]()
var countdown = promises.count
for promise in promises {
promise.then { value in
values.append(value)
}
.always {
--countdown
if countdown == 0 {
if values.isEmpty {
reject(AnyError.Any)
}
else {
fulfill(values)
}
}
}
}
}
}
public enum AnyError: ErrorType {
case Any
}
我在 Swift 中使用 PromiseKit 3.0,并且我有一系列承诺 [Promise<Int>]
。我想将所有成功的承诺收集到一个承诺中。 Promise<[Int]>
.
when
和 join
都拒绝,即使其中一个承诺被拒绝。根据文档,我应该能够使用 join
并且错误将包含一个已完成值的数组,但在 Swift 中,错误包含传入的所有承诺,而不是实现的值。
如有任何帮助,我们将不胜感激。
我明白了,我现在需要一个新功能:
https://gist.github.com/dtartaglia/2b19e59beaf480535596
/**
Waits on all provided promises.
`any` waits on all provided promises, it rejects only if all of the promises rejected, otherwise it fulfills with values from the fulfilled promises.
- Returns: A new promise that resolves once all the provided promises resolve.
*/
public func any<T>(promises: [Promise<T>]) -> Promise<[T]> {
guard !promises.isEmpty else { return Promise<[T]>([]) }
return Promise<[T]> { fulfill, reject in
var values = [T]()
var countdown = promises.count
for promise in promises {
promise.then { value in
values.append(value)
}
.always {
--countdown
if countdown == 0 {
if values.isEmpty {
reject(AnyError.Any)
}
else {
fulfill(values)
}
}
}
}
}
}
public enum AnyError: ErrorType {
case Any
}