即使条件为真,它也会继续执行并返回res.json()。
_.each(rooms, function(room){
if(room.users.length == users.length) {
return res.json(room); // <-- returns but still continuous execution
}
});
以下是控制台中打印的错误。
错误:错误:无法多次写入响应
我还需要做其他事吗?
答案 0 :(得分:0)
你应该打破循环然后require.undef
答案 1 :(得分:0)
在How to break/exit from a each() function in JQuery?中发布,您可以退出each
退出false
循环。因此,
_.each(rooms, function(room){
if(room.users.length == users.length) {
res.json(room);
return false;
}
});
如果这不起作用且您使用了underscore.js,请参阅how to break the _.each function in underscore.js,建议使用.every
return false
工作的地方(而不是.each
)。因此
_.every(rooms, function(room){
if(room.users.length == users.length) {
res.json(room);
return false;
}
});
答案 2 :(得分:0)
您可以考虑在下划线/ lodash api中使用不同的函数,例如,find似乎适合您正在做的更好:
var room = _.find(rooms, function(room){
return room.users.length == users.length;
});
res.json(room);