以编程方式快速访问闭包成员

标签 swift promisekit

我正在构建一个 Swift 应用程序并使用 PromiseKit 来使异步功能更具可读性。

来自PromiseKit docs ,我可以看到它支持多个并发的 Promise。我编写了一些代码如下,在 for 循环中生成 Promise,然后等待它们全部实现。

for index in 0...100 {
    let urlString = "https://someurl.com/item/\(index)"
    guard let url = URL(string: urlString) else { return }
    requestPromises += [URLSession.shared.dataTask(.promise, with: url).validate()]
}

firstly {
    when(fulfilled: requestPromises)
}.done {
    // process results
}

文档中的示例显示将 promise 写为:

firstly {
    when(fulfilled: operation1(), operation2())
}.done { result1, result2 in
    //…
}

我的问题是我不想写出 result1, result2, ... result100。有没有办法以编程方式访问结果?

最佳答案

我能够通过以下方式解决这个问题(感谢@MadProgrammer):

for index in 0...100 {
    let urlString = "https://someurl.com/item/\(index)"
    guard let url = URL(string: urlString) else { return }
    requestPromises += [URLSession.shared.dataTask(.promise, with: url).validate()]
}

firstly {
    when(fulfilled: requestPromises)
}.done { results in
    // process results
}

关于以编程方式快速访问闭包成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048040/

相关文章:

ios - CloudKit中如何通过creationDate查询?

ios - 用于正则表达式模式匹配崩溃的 NSPredicate

iOS Swift MapKit 为什么 MKPointAnnotation 是可拖动的,而符合 MKAnnotation 的类则不可拖动

swift - 创建一个包含可执行代码的 void Promise

swift - Swift 中有类似 Java 的 "Future"的东西吗?

ios - PromiseKit 6 中 firSTLy 的语法

ios - 如何在 PromiseKit 6 中使用循环?

iOS 共享扩展 : get URL of page when sharing via context menu in Safari

ios - 无法使用 Swift 通过 button.addTraget 函数发送特定数据类型

swift - 等待 promise 返回