也谈用ES6 的 generator 和 yield 缓解**回调陷阱**:用过wait.for-ES6 么?有更好的推荐么?
发布于 10 年前 作者 j4cnodejs 7039 次浏览 最后一次编辑是 8 年前

最近研究用 node --harmony 语法中新增的语法 generatoryield 缓解 回调陷阱, 于是找到了这个 wait.for-ES6, 以异步函数dns.resove为例, 它带来的顺序化方案是类似这样的:

var dns = require("dns"), 
      wait=require('wait.for-es6');

function* test(){
    var addresses = yield wait.for(dns.resolve4, "google.com");
    for (var i = 0; i < addresses.length; i++) {
        var a = addresses[i];
        console.log("reverse for " + a + ": " + JSON.stringify( yield wait.for(dns.reverse,a)));
    }
}

wait.launchFiber(test); 

其中 yield wait.for(dns.resolv4, "google.com"); 也可以把wait.for省略掉简写成:

var addresses = yield [dns.resolv4, "google.com"];//魔幻的简化

适用于解决现有项目中的大部分回调陷阱,用着还挺顺手的, 不知道诸位有没有更好的模块推荐?

4 回复

好东西, 一会研究下, 现在最火使用最多的当然是 TJ 大神的 co 模块了, 强烈建议看一下, 在 co 的基础之上 TJ 给出了新的web开发框架 koa. 最近大家都在看哈

Thanks, 我也关注co了, 跟wait.for异曲同工之妙

很好的新特性, 可是好遥远啊!

回到顶部