我有这段代码:
log.error(r.reason) for r in results when r.state == 'rejected'
转换为:
var r, _i, _len, _results;
_results = [];
for (_i = 0, _len = results.length; _i < _len; _i++) {
r = results[_i];
if (r.state === 'rejected') {
_results.push(log.error(r.reason));
}
}
return _results;
我不需要累积log.error
的结果,我只需要为数组的每个适当元素打印一个错误。这是如何在coffeescript中完成的?
答案 0 :(得分:2)
CoffeeScript中几乎每个语句都是一个表达式。对于循环,这意味着在数组中累积每次迭代的结果。如果您不想要这种行为,则必须显式添加return
语句:
log.error(r.reason) for r in results when r.state == 'rejected'; return
此外,为了回答您的问题标题:“为数组中的每个元素调用函数”如果您的JS运行时支持数组函数forEach
,这是一种替代方法在每个数组项上应用函数:
results.forEach (item) -> log.error item.reason if item.state == 'rejected'