Skip to content

Instantly share code, notes, and snippets.

@jcoglan
Last active August 29, 2015 13:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcoglan/9697712 to your computer and use it in GitHub Desktop.
Save jcoglan/9697712 to your computer and use it in GitHub Desktop.
// fs_stat :: String -> (Error -> Stat -> ()) -> ()
var fs_stat = _.curry(fs.stat, 2);
// paths :: [String]
var paths = ['file1.txt', 'file2.txt', 'file3.txt'];
// tmp :: [(Error -> Stat -> ()) -> ()]
var tmp = paths.map(oneparam(fs_stat));
// async.parallel :: [(Error -> a -> ()) -> ()] -> (Error -> [a] -> ()) -> ()
// statsCallback :: (Error -> [a] -> ()) -> ()
var statsCallback = _.partial(async.parallel, tmp);
statsCallback(function (err, stats) {
// use the stats
});
// fs_stat :: String -> Promise Stat
var fs_stat = node.lift(fs.stat); // node = require("when/node");
// paths :: [String]
var paths = ['file1.txt', 'file2.txt', 'file3.txt'];
// tmp :: [Promise Stat]
var tmp = paths.map(oneparam(fs_stat));
// statsPromises :: Promise [Stat]
var statsPromises = when.all(tmp);
statsPromises.then(function(stats) {
// use the stats
});
@chrisvariety
Copy link

generators:

var fs = require('co-fs');
var co = require('co');

co(function *() {
  var paths = ['file1.txt', 'file2.txt', 'file3.txt'];

  var stats = yield paths.map(function(path) {
    return fs.stat(path);
  });

  // use the stats
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment