koajs yield 循环问题。。
for (var i = 0; i < comments.length; i++) {
comments[i].avatar = (yield commentModel.getAvatar({name: comments[i].name})).author.avatar;
comments[i].createtime = formatDate(comments[i].createtime, true);
comments[i].comment = marked(comments[i].comment);
comments[i].cid = String(comments[i]._id);
}
不会错误
_.forEach(comments,function(comment, key){
console.log((yield commentModel.getAvatar({name: comment.name})))
});
//SyntaxError: Unexpected identifier
//lodashjs
需要怎么处理,包裹?
3 回复
_.forEach / Array.prototype.forEach 只接受 normal function
你在function (){ }里面写yield就是unexpect identifier 写成function * () { } 放在forEach里也没效果,因为调用这个GeneratorFunction得到的是Generator,只有调用generator.next()函数才会开始执行
正确姿势是Promise.each (bluebird里有) componentModel.getAvatar 返回Promise直接用,返回其他类型用co.wrap
@nswbmw [{},{},{}] 我是处理这样的数据,没太看懂。。。
用map返回一個generator function的數組,最外面yield。