Minimalistic, zero dependency, async utilities for ES6, ES2015, node v6. This library assume node v6 or above with ES2015 Promise and generators. It has no dependency.
Promisify
Promisify a function which follow the standard callback(err, result) pattern.
const promisify = require("async6").promisify;
const glob = require('glob');
const pglob = promisify(glob);
glob("**/*.js", options, function (er, files) {
})
pglob("**/*.js").then(files => console.log(files));
- Use the default Node v6, es2015 Promise.
- Does not use
bind()
as there are some performance issues.
run
Run a generator function or generator function "instance" (after first call) that supports direct value, promise in yields, and return a ES2015 Promise which result with the return of the generator function.
const run = require("async6").run;
function* mygen(val){
val = val || 0;
var a = yield 12;
var b = yield getB();
var c = yield getPromiseForC();
return a + b + c;
}
run(mygen).then(v => console.log(v));
run(mygen(10)).then(v => console.log(v));
Combining promise, yield, generator
const async6 = require("async6").promisify;
const promisify = async6.promisify;
const run = async6.run;
const glob = promisify(require('glob'));
function* listWebFiles(root){
root = root || ""
var jsFiles = yield pglob(root + "**/*.js");
var cssFiles = yield pglob(root + "**/*.css");
return {jsFiles, cssFiles};
}
run(listWebFiles).then(r => console.log(`jsFiles:\n${r.jsFiles} \ncssFiles:\n${r.cssFiles}`));
run(listWebFiles("./dist/")).then(r => console.log(`jsFiles:\n${r.jsFiles} \ncssFiles:\n${r.cssFiles}`));