Swift 以编程方式访问闭包成员
Swift access closure members programmatically
我正在构建一个 Swift 应用程序并使用 PromiseKit 使异步功能更具可读性。
从PromiseKit docs可以看出它支持多个并发promise。我写了一些如下代码来在 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
//…
}
我的问题是我不想写出 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
}
我正在构建一个 Swift 应用程序并使用 PromiseKit 使异步功能更具可读性。
从PromiseKit docs可以看出它支持多个并发promise。我写了一些如下代码来在 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
//…
}
我的问题是我不想写出 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
}