Skip to content

jmeyers91/abet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Abet

Abet allows promises to be chained using the properties and methods of their results.

Install

npm install abet

Example

const promise = Promise.resolve({
  users: [
    {name: 'joe', age: 10},
    {name: 'sally', age: 20},
  ]
});

abet(promise)
  .users
  .reduce((a, b) => {
    if(a.age > b.age) return a;
    return b;
  })
  .name
  .then(name => console.log(name)); // prints 'sally'
  

Or using async/await:


const { name } = await abet(promise)
  .users
  .reduce((a, b) => {
    if(a.age > b.age) return a;
    return b;
  });
  
console.log(name); // prints 'sally'

How it works

Abet relies on ES6 Proxies to keep track of keys being accessed and methods being called. When then or catch is called on a wrapped promise, the result is intercepted and reduced using the keys and methods used on the wrapper.

Take a look at the source. It's only 32 lines.

About

Make promises eagerly accessible.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published