代码之家  ›  专栏  ›  技术社区  ›  rhlsthrm

Swift访问闭包成员以编程方式

  •  0
  • rhlsthrm  · 技术社区  · 6 年前

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

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

    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
    }
    

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

    我的问题是我不想写出结果1,结果2。。。结果100。有没有一种方法可以通过编程方式访问结果?

    1 回复  |  直到 6 年前
        1
  •  0
  •   rhlsthrm    6 年前

    我可以用以下方法解决这个问题(感谢@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
    }