【发布时间】:2018-06-29 05:42:43
【问题描述】:
我正在使用 PromiseKit 和 Swift,到目前为止它非常方便。他们提供的功能之一是when(),它允许您拥有一个包含任意数量的承诺的数组,并且只有在所有承诺都完成后才执行某些事情。
但是,数组中的 Promise 是并行执行的。我还没有找到任何可以让我按顺序执行它们的功能。我尝试编写自己的递归函数,但它似乎没有按照它们在数组中的顺序执行承诺,并且我偶尔会遇到“Promise deallocated”错误。请帮忙!
static func executeSequentially(promises: [Promise<Void>]) -> Promise<Void> {
return Promise<Void> { fulfil, reject in
var mutablePromises = promises
if mutablePromises.count > 0 {
mutablePromises.first!
.then { _ -> Promise<Void> in
print("DEBUG: \(mutablePromises.count) promises in promise array.")
mutablePromises.remove(at: 0)
return executeSequentially(promises: mutablePromises)
}.catch { error in
print("DEBUG: Promise chain rejected.")
reject(error)
}
} else {
print("DEBUG: Promise chain fulfilled.")
fulfil(())
}
}
}
【问题讨论】:
标签: ios swift promisekit