1.1.0 • Published 6 years ago

awaitify v1.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

awaitify v1.1.0

Codeship Status for fixjs/awaitify Code Climate Download stats

A lightweight library to simplify asynchronous operations using function generators and yield keyword, which is an alternative for Async/Await keywords without having to use any Transpiler like babel. You could wrap the function generator inside this function like this:

var awaitify = require('awaitify');

var getUsers = awaitify(function*(){
  // a xhr request to load users list
  var users = yield jQuery.get('/api/users');
  return users;
});

getUsers()
  .then((users)=>{
    console.log(users);
  });

// or

var users = yield getUsers();
console.log(users);

which allows you await on a promise using yield keyword.

yield awaitify.map([], function* (){})

const mapList = function* (){
  const mappedUsersInfoList = yield awaitify.map(usersList, function* (userObject){
    const userInfo = yield loadUserInfo(userObject._id);
    userInfo.baseData = userObject;
    return userInfo;
  });
  // You can have access to the new list of usersInfo
}.awaitify();

awaitify.parallel({})

const loadData = function* (){
  const { users, config } = yield awaitify.parallel({
    users: function* () {
      const users = yield getUsers();
      console.log(users);
      return users;
    },
    config: awaitify.fs.loadConfigFile('./package.json')
  });
  // You can have access to both users and config variable here
}.awaitify();

promise.then(function*(){})

This library also allows the pass generator functions to the promise chain implemented by this module:

getUsers()
  .then(function *(users){
    console.log(users);
    var user = yield jQuery.get('/api/users/5698d6a5246af3c847be3000');
    console.log(user);
  });

awaitify.cb

var awaitify = require('awaitify');
var fs = require('fs');
var readFile = path => awaitify.cb(cb => fs.readFile(path, 'utf8', cb)));

var main = awaitify(function*(){
  var data;
  try{
    data = yield readFile('/any/file/path');
  } catch (err) {
    console.log(err, err.stack);
  }
  return data;
});

main();

// or

readFile('/any/file/path')
  .then(data => console.log(data))
  .catch(err => console.log(err, err.stack))

awaitify.module

const SampleModuleV1 = awaitify.module({
  *createSomething(){
    let result = yield Promise.resolve('Something');
    result += ' V1';
    return result;
  },
});

const SampleModuleV2 = awaitify.module(SampleModuleV1 ,{
  *createSomething(){
    let result = yield SampleModuleV1.createSomething();
    result += ', V2';
    return result;
  },
});

const result = yield SampleModuleV2.createSomething();
console.log(result); // "Something V1, V2"
1.1.0

6 years ago

1.1.0-beta

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.1-beta

7 years ago

1.0.0

7 years ago

0.9.9

7 years ago

0.9.9-beta

7 years ago

0.9.8

8 years ago