递归式 同步/异步 可否破callback hell?--sas.js
发布于 10 年前 作者 hezedu 6095 次浏览 最后一次编辑是 8 年前 来自 分享

大家好,本人年关无聊写了个控制同步/异步流的程序,名叫sas.js。S代表sync,AS代表async。可以递归,因此callback有多少层都不害怕。现已发布到npm上 npm install sas 。 用法很简单,大家只要记住:数组代表同步,对象代表异步。 废话不多说,上示例: nodejs全部用异步方法 mkdir 创建目录树。 先创建一个根目录,再在根目录下创建三子目录,再在三子目录下各创建三子目录。

var sas = require('sas');
var fs = require('fs');

var mktree = function(path) {
  return function(cb, ext) {
    if (ext.Sparent) {
      path = ext.Sparent[0] + path;
    }
    fs.mkdir(path, 777, function(err, result) {
      if (err) {
        return cb('$STOP');
      }
      cb(path);
    });
  }
}
var plan = [
    mktree(__dirname + '/root' + Date.now()), {
        '1': [mktree('/1'), {
            '1-1': mktree('/1-1'),
            '1-2': mktree('/1-2'),
            '1-3': mktree('/1-3')
        }],
        '2': [mktree('/2'), {
            '2-1': mktree('/2-1'),
            '2-2': mktree('/2-2'),
            '2-3': mktree('/2-3')
        }],
        '3': [mktree('/3'), {
            '3-1': mktree('/3-1'),
            '3-2': mktree('/3-2'),
            '3-3': mktree('/3-3')
        }]
    }
];
sas(plan,{debug:true});

console强大的追踪:

image

更多详情(实在手懒)请访问项目地址: github 欢迎大牛指点!

1 回复

就这么一看,还以为是sea.js。。。

回到顶部