Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent a Command Line Tool from exiting before asynchronous operation completes

In a swift 2 command line tool (main.swift), I have the following:

import Foundation print("yay")  var request = HTTPTask() request.GET("http://www.stackoverflow.com", parameters: nil, completionHandler: {(response: HTTPResponse) in     if let err = response.error {         print("error: \(err.localizedDescription)")         return //also notify app of failure as needed     }     if let data = response.responseObject as? NSData {         let str = NSString(data: data, encoding: NSUTF8StringEncoding)         print("response: \(str)") //prints the HTML of the page     } }) 

The console shows 'yay' and then exits (Program ended with exit code: 0), seemingly without ever waiting for the request to complete. How would I prevent this from happening?

The code is using swiftHTTP

I think I might need an NSRunLoop but there is no swift example

like image 798
codecowboy Avatar asked Aug 11 '15 14:08

codecowboy


1 Answers

Adding RunLoop.main.run() to the end of the file is one option. More info on another approach using a semaphore here

like image 81
codecowboy Avatar answered Sep 17 '22 03:09

codecowboy