PromiseKit: вызов когда (выполнено :) с массивом Promise другого типа - PullRequest
1 голос
/ 22 января 2020

У меня есть массив Promise разного типа. В данном конкретном случае Promise<URL> и Promise<UIImage>, которые я хочу предоставить when(fulfilled:)

В качестве примера:

let fileName = "somefilename"

 let videos: [URL] = selectedItems.compactMap { guard $0.isVideo else {return nil}; return URL(string: $0.url) }
 let images: [URL] = selectedItems.compactMap { guard !$0.isVideo else {return nil}; return URL(string: $0.url) }
 let videoRequests = videos.map { RemoteDownloadManager.shared.downloadVideo(from: $0, withName: fileName) }
 let imgRequests = images.map {RemoteDownloadManager.shared.downloadImage(from: $0)}

У меня есть два массива обещаний, но разных типов : [Promise<UIImage>] и [Promise<URL].

Есть ли способ вызова when(fulfilled) с объединенным, приведенным, массивом?

when(fulfilled: [imgRequests, videoRequests])
        .done { items in
                  // [...]
}

Это не скомпилируется (очевидно) с ошибкой: Cannot invoke 'when' with an argument list of type '(fulfilled: [Any])'

Идеи?

...