项目作者: ClintJang

项目描述 :
Bolts-Swift Sample
高级语言: Swift
项目地址: git://github.com/ClintJang/JWSBoltsSwiftSample.git
创建时间: 2017-12-06T06:21:02Z
项目社区:https://github.com/ClintJang/JWSBoltsSwiftSample

开源协议:MIT License

下载


JWSBoltsSwiftSample

License Swift 4

Description

Just Bolts-Swift Sample Source ..

Info

Result Image

Source

  • ViewController.swift

func runTestTask() {
var tasks = Task

  1. tasks.append(SampleTaskManager().sampleTask1())
  2. tasks.append(SampleTaskManager().sampleTask2())
  3. // tasks.append(SampleTaskManager().sampleError1Task())
  4. tasks.append(SampleTaskManager().sampleITunesTask("909253"))
  5. tasks.append(SampleTaskManager().sampleITunesTask("284910350"))
  6. tasks.append(SampleTaskManager().sampleITunesTask("1186189731"))
  7. tasks.append(SampleTaskManager().sampleLoopTask(1111111))
  8. tasks.append(SampleTaskManager().sampleLoopTask(1234567))
  9. tasks.append(SampleTaskManager().sampleLoopTask(12345678))
  10. Task<AnyObject>.whenAllResult(tasks).continueWith { (task) -> String in
  11. let message = "\n\nAll task Completion!!!!!! \n\ninfo : \(task)"
  12. print(message)
  13. let alert = UIAlertController(title: "Completion", message: message, preferredStyle: UIAlertControllerStyle.alert)
  14. alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
  15. self.present(alert, animated: true, completion: nil)
  16. return "Completion"
  17. }
  18. }

  • SampleManager.swift
  1. func sampleError1Task()-> Task {
  2. let sampleTask = TaskCompletionSource()
  3. let url = URL(string: "https://sample.com/error")
  4. URLSession.shared.dataTask(with: url!, completionHandler: {
  5. (data, response, error) in
  6. if let error = error {
  7. print("\(#function), \(error)")
  8. // sampleTask.set(error: error)
  9. sampleTask.set(result: "error StreamError!!(errorTask)" as AnyObject)
  10. } else {
  11. print("\(#function), success errorTask")
  12. sampleTask.set(result: "success errorTask" as AnyObject)
  13. }
  14. }).resume()
  15. return sampleTask.task
  16. }
  17. func sampleTask1() -> Task{
  18. let sampleTask = TaskCompletionSource()
  19. let url = URL(string: "https://yourdatacenterid.qualtrics.com/API/v3/mailinglists/ML_1234567890AbCdE/samples/PL_123456890AbCdE")
  20. URLSession.shared.dataTask(with: url!, completionHandler: {
  21. (data, response, error) in
  22. if let error = error {
  23. print("\(#function), \(error)")
  24. sampleTask.set(error: error)
  25. } else {
  26. print("\(#function), success 1")
  27. sampleTask.set(result: "success1" as AnyObject)
  28. }
  29. }).resume()
  30. return sampleTask.task
  31. }
  32. func sampleTask2() -> Task{
  33. let sampleTask = TaskCompletionSource()
  34. let url = URL(string: "https://itunes.apple.com/lookup?id=909253")
  35. URLSession.shared.dataTask(with: url!, completionHandler: {
  36. (data, response, error) in
  37. if let error = error {
  38. print("\(#function), \(error)")
  39. sampleTask.set(error: error)
  40. } else {
  41. print("\(#function), success 2")
  42. sampleTask.set(result: "success2" as AnyObject)
  43. }
  44. }).resume()
  45. return sampleTask.task
  46. }
  47. func sampleLoopTask(_ loop:Int) -> Task{
  48. let sampleTask = TaskCompletionSource()
  49. DispatchQueue(label: "dataLoop\(loop)").async {
  50. let loopMax = loop
  51. for _ in 0.. Task{
  52. let sampleTask = TaskCompletionSource()
  53. let url = URL(string: "https://itunes.apple.com/lookup?id=\(id)")
  54. URLSession.shared.dataTask(with: url!, completionHandler: {
  55. (data, response, error) in
  56. if let error = error {
  57. print("\(#function), \(error)")
  58. sampleTask.set(error: error)
  59. } else {
  60. print("\(#function), success id:\(id)")
  61. sampleTask.set(result: "success id:\(id)" as AnyObject)
  62. }
  63. }).resume()
  64. return sampleTask.task
  65. }

License

Copyright 2017 Clint Jang.

Licensed under MIT License: https://opensource.org/licenses/MIT