也谈用ES6 的 generator 和 yield 缓解**回调陷阱**:用过wait.for-ES6 么?有更好的推荐么?
发布于 11 年前 作者 j4cnodejs 7745 次预览 最后一次回复是 11 年前 来自
最近研究用 node --harmony 语法中新增的语法 generator 和 yield 缓解 回调陷阱, 于是找到了这个
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异曲同工之妙
還可以期待 async/await http://wiki.ecmascript.org/doku.php?id=strawman:async_functions
很好的新特性, 可是好遥远啊!