В моем проекте есть множество функций, которые асинхронно извлекают данные из базового источника данных и возвращают результат в виде 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>
.Честно говоря, я не могу сосредоточиться на этом.В чем проблема?
PS Чтобы упростить понимание, я создал следующий фрагмент:
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