[我正在寻找JavaScript的“翻译器”,就像已经是CoffeScript,例如将与forEach
(受Groovy启发)一起使用
myArray.forEach() -> val, idx {
// do something with value and idx
}
翻译为JavaScript:
myArray.forEach(function(val, idx){
// do something with value and idx
});
或更有用的东西...
function event(cb){
foo()-> err, data1;
bar(data1)-> err, data2;
cb(data2);
}
方法被封装:
function event(cb){
foo(function(err,data1){
bar(data1, function(err, data2) {
cb(data2);
});
});
}
我想问是否还不存在像JavaScript这样的更好的“编译器”?
这太酷了……我在nodejs中的代码大部分看起来像这样:-)
function dealer(cb){
async.parallel([
function(pcb){
async.watterfall([function(wcb){
first(function(a){ wcb(a); });
}, function(a, wcb){
thirt(a, function(c){ wcb(c); });
fourth(a, function(d){
// dealing with “a” as well and nobody care my result
});
}],
function(err, array_with_ac){
pcb(array_with_ac);
});
}, function(pcb){
second(function(b){ pcb(b);});
}], function(err, data){
cb(data[0][0]+data[1]+data[0][1]); // dealing with “a” “b” and “c” not with “d”
});
}
但是,看看代码美丽和可读的代码可能是:
function dealer(cb){
first() -> a;
second() -> b;
third(a) -> c; // dealing with “a”
fourth(a) -> d; // dealing with “a” as well and nobody care about my result
cb(a+b+c); // dealing with “a” “b” and “c” not with “d”
}
是的,这是理想的情况,当翻译程序自动确定方法时,方法需要并行运行,并且在完成另一个方法后需要调用方法。我可以想象它是可行的]]
请,您知道类似的事情吗?
[我正在寻找JavaScript的“翻译器”,就像已经是CoffeScript,例如将与forEach(受Groovy启发)myArray.forEach()-> val,idx {//对...做一些工作] >
您是否查看过Promises(这里是an implementation)?它是纯Javascript,因此您不会像CoffeeScript那样更改语法,但是保证可以优雅地处理“我想使用a,b和c但不使用d”
情况。如果您正在寻找异步“问题”的解决方案,则可能需要查看async.auto
。