Express.js / while
app.post('/process', function(request, response){
var i = 0;
while(i < data.length){
if(data[i].condition1 == condition1 && data[i].condition2 == condition2){
response.redirect('/first_page');
}
i++;
}
response.redirect('/second_page');
}
我试图使条件1和条件2为真,请重定向到第一页。如果错误,则重定向到第二页。但是它一直在发生错误。这是日志。
回答如下:错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头
[如果您要重定向到“ first_page”,如果数组数据中的任何一项都与条件匹配,则为“ second_page”,如果都不与条件匹配,
对您的代码的最简单的更改是
app.post('/process', function(request, response) {
var i = 0;
while (i < data.length) {
if (data[i].condition1 == condition1 && data[i].condition2 == condition2) {
response.redirect('/first_page');
return; // done, no need to check any more of data
}
i++;
}
response.redirect('/second_page');
});
但是,将Array#some
与if / else一起使用将有效
app.post('/process', function(request, response) {
if (data.some(item => item.condition1 == condition1 && item.condition2 == condition2)) {
response.redirect('/first_page');
} else {
response.redirect('/second_page');
}
});
[data.some
将返回true,如果数据中的任何一项与条件匹配,否则将返回false
就个人而言,我更喜欢Array.some代码,因为它更整洁,而且对正在发生的事情更明显]