Skip to content

Add a Playground so you can play with Promises interactively#2

Merged
khanlou merged 3 commits intokhanlou:masterfrom
kelan:playground
Sep 15, 2016
Merged

Add a Playground so you can play with Promises interactively#2
khanlou merged 3 commits intokhanlou:masterfrom
kelan:playground

Conversation

@kelan
Copy link
Contributor

@kelan kelan commented Sep 10, 2016

Changes to the Promise code:

Changes to the Promise code:
* Add `public` to everything so it's accessible from outside the module.
* Add some headerdoc (mostly copy/pasted from http://khanlou.com/2016/08/common-patterns-with-promises/)
@kelan
Copy link
Contributor Author

kelan commented Sep 10, 2016

I've been playing with this project recently in a Playground, and thought it was a good example for including the playground with the project, as I talk about here.

@kelan kelan mentioned this pull request Sep 10, 2016
Also add syntax highlighting to the code blocks, and a link to the A+ spec.

promisedString("simple example").then { result in
print("Got result: ", result)
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i know i haven't published a style guide yet, but i'm not using trailing block syntax for this project. i'll comment each time it needs to be fixed


Promise<[String]>.all(promises).then { allStrings -> Void in
print("got em all:", allStrings)
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax


Promise<Void>.delay(1.0).then { _ -> Void in
print("after delay")
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax

Promise<String>.race(promises).then { (value) -> Void in
// If you run this multiple times, you might get a different result each time
print("got: \(value)")
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax

print("succeeded: \(result)")
}).onFailure { error in
print("failed \(error)")
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax

}
}
return promise
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax, and also you can use the work: initializer instead of dispatch_async

Copy link
Contributor Author

@kelan kelan Sep 15, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also you can use the work: initializer

Oh, right, duh.

print("got result:", result)
}).onFailure { error in
print("failed: \(error)")
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax

print("succeeded: \(result)")
}).onFailure { error in
print("failed \(error)")
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trailing block syntax


/// Wait for all the promises you give it to fulfill, and once they have, fulfill itself
/// with the array of all fulfilled values.
public static func all<T>(promises: [Promise<T>]) -> Promise<[T]> {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are these comments formatted such that they show up when the user option-clicks?

Copy link
Contributor Author

@kelan kelan Sep 15, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's standard headerdoc for Swift code, and shows up when you option-click on the symbol in Xcode.

screen shot 2016-09-14 at 6 54 35 pm

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sweet!

@kelan
Copy link
Contributor Author

kelan commented Sep 15, 2016

Thanks for the feedback! I'll try to work on the style tweaks later tonight.

@kelan
Copy link
Contributor Author

kelan commented Sep 15, 2016

I think I got 'em all.

@khanlou khanlou merged commit 84393e2 into khanlou:master Sep 15, 2016
@kelan kelan deleted the playground branch September 15, 2016 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants