也谈用ES6 的 generator 和 yield 缓解**回调陷阱**:用过wait.for-ES6 么?有更好的推荐么?
最近研究用 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"];//魔幻的简化
适用于解决现有项目中的大部分回调陷阱,用着还挺顺手的, 不知道诸位有没有更好的模块推荐?