Skip to content

resinfo/rescript-async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@resinfo/async

A ReScript module providing a lazy, typesafe API for writing asynchronous code.

Installation

via NPM.

yarn add @resinfo/async
# or
npm install --save @resinfo/async

Usage:

module Async = Resinfo_async

// Construct from a promise
let fetch = url => {
  Async.fromPromise(
    // assume "get" is a previously defined promise function
    () => get(url),
    ~resolve=json => Ok(json),
    ~reject=_ => Error()
  )
}

// This is a regular value that can be passed around like
// any other; it isn't run until explicitly called
let fetchProfile = {
  fetch("https://api.github.com/users/resinfo")
  ->Async.map(result => {
    switch result {
      | Ok(json) => json.login
      | Error() => "Unable to get user"
    }
  })
}

// Run as callback
fetchProfile->Async.run(name => {
  Js.log2("Name is", name)
})

// Run as promise
fetchProfile
  ->Async.toPromise
  ->Js.Promise.then_(name => {
    Js.log2("Name is", name)

    Js.Promise.resolve()
  }, _)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

About

A ReScript module providing a lazy, typesafe API for writing asynchronous code.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published