【发布时间】:2018-11-20 02:48:57
【问题描述】:
在我的项目中,我有许多函数可以从底层数据源异步获取数据并将结果作为Promise<T> 返回,其中T 是一个可选 模型对象。
我需要并行获取 2 个不同的独立对象。为此,我尝试使用when(resolved: [Promise<T>]) 函数:
let userPromise: Promise<User> = fetchUser(with: userID)
let documentPromise: Promise<Document> = fetchDocument(with: documentID)
when(resolved: [userPromise, documentPromise]).done {
...
}
但是我收到了一个错误Cannot invoke 'when' with an argument list of type '(resolved: [Any])'。我试图将承诺分配给明确声明的数组:
let promises: [Promise<Any>] = [userPromise, documentPromise]
但现在我收到一个错误,Promise<User> 无法分配给 Promise<Any>。坦率地说,我无法想象它。有什么问题?
P.S. 为了让事情更容易掌握,我创建了以下 sn-p:
func getPromise() -> Promise<String> {
return Promise<String>.pending().promise
}
let promise: Promise<Any> = getPromise()
产生类似的错误:Cannot convert value of type 'Promise<String>' to specified type 'Promise<Any>'
任何想法如何解决它?谢谢!
环境: PromiseKit 6.2.4、Swift 4.1、Xcode 9.4
【问题讨论】:
-
你找到答案了吗?
-
不,很遗憾。
-
其实我有。你可以试试:__PMKWhen([AnyPromise.init(try fetchUser(with: userID)), try AnyPromise.init(fetchDocument(with: documentID))])
-
有趣!谢谢。会试试看。
标签: ios swift generics promisekit