async_await
async_await
async/await for Crystal
Installation
Add this to your application's shard.yml
:
dependencies:
async_await:
github: firejox/crystal-async_await
Usage
require "async_await"
class Foo
getter ch = AAChannel(String).new
async def bar
await Task.delay(Time::Span.new(0, 0, 1))
await ch.receive # => "Hello"
await ch.send "Crystal!"
end
end
foo = Foo.new
async_spawn do
foo.bar
end
foo.ch.send_with_csp "Hello"
foo.ch.receive_with_csp # => "Crystal!"
another way for concurrent
Roadmap
- [ ] Async IO
- [ ] Thread Pool Support
- [ ] Cancellation for Task
- [ ] Test more
Contributing
- Fork it ( https://github.com/firejox/crystal-async_await/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- firejox firejox - creator, maintainer