Skip to content

Instantly share code, notes, and snippets.

View zhxnlai's full-sized avatar

Zhixuan Lai zhxnlai

  • Square Inc
  • San Francisco, CA
View GitHub Profile
<style id="jsbin-css">
@import url(https://fonts.googleapis.com/css?family=Roboto);
body {
font-family: Roboto, sans-serif !important;
max-width: 650px;
margin: auto;
padding: 1em;
}
<style id="jsbin-css">
@import url(https://fonts.googleapis.com/css?family=Roboto);
body {
font-family: Roboto, sans-serif !important;
max-width: 650px;
margin: auto;
padding: 1em;
}
<style id="jsbin-css">
@import url(https://fonts.googleapis.com/css?family=Roboto);
body {
font-family: Roboto, sans-serif !important;
max-width: 650px;
margin: auto;
padding: 1em;
}
<style id="jsbin-css">
@import url(https://fonts.googleapis.com/css?family=Roboto);
body {
font-family: Roboto, sans-serif !important;
max-width: 650px;
margin: auto;
padding: 1em;
}
@zhxnlai
zhxnlai / AsyncTaskNSURL.swift
Last active June 15, 2016 19:18
Async Task NSURL
extension NSURL : ThrowableTaskType {
public typealias ReturnType = (NSData, NSURLResponse)
public func action(completion: Result<ReturnType> -> ()) {
ThrowableTask<ReturnType> {
let session = NSURLSession(configuration: .ephemeralSessionConfiguration())
let (data, response, error) = Task { callback in session.dataTaskWithURL(self, completionHandler: callback).resume()}.await()
guard error == nil else { throw error! }
return (data!, response!)
@zhxnlai
zhxnlai / AsyncTaskExtendingViewController.swift
Last active June 15, 2016 09:38
Async Task Extending View Controller
class ImagePickerDemoViewController: UIViewController {
let imageView = UIImageView()
func launchImagePicker() {
Task {
do {
let data = try ImagePickerTask(viewController: self).await()
} catch Error.PhotoLibraryNotAvailable {
alert("Photo Library is Not Available")
@zhxnlai
zhxnlai / AsyncTaskExtending.swift
Last active June 15, 2016 09:31
Async Task Extending
class ImagePickerTask : NSObject {
enum Error : ErrorType {
case PhotoLibraryNotAvailable
}
typealias CompletionHandler = [String: AnyObject]? -> ()
var completionHandler: CompletionHandler!
let viewController: UIViewController
@zhxnlai
zhxnlai / AsyncTaskErrorHandling.swift
Last active June 15, 2016 19:10
Async Task Error Handling
func load(path: String) -> ThrowableTask<NSData> {
return ThrowableTask {
switch path {
case "profile.png":
return NSData()
case "index.html":
return NSData()
default:
throw Error.NotFound
}
@zhxnlai
zhxnlai / AsyncTaskCollection.swift
Created June 15, 2016 09:22
Async Task Collection
let replicatedURLs = ["https://web1.swift.org", "https://web2.swift.org"]
let first = replicatedURLs.map(get).awaitFirst()
let messages = ["1", "2", "3"]
let all = messages.map(encrypt).awaitAll()
@zhxnlai
zhxnlai / AsyncTaskComposing.swift
Created June 15, 2016 09:07
Async Task Composing
Task {
print(“downloading image”)
var image = UIImage(data: downloadImage.await())!
updateImageView(image).await(.Main)
print(“processing image”)
image = processImage(image).await()
updateImageView(image).await(.Main)
print(“finished”)
}.async()