gpt4 book ai didi

javascript - 错误: Can't set headers after they are sent from a forEach loop

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:18 24 4
gpt4 key购买 nike

我对node.js还很陌生,这里的数组包含一个id列表。当我从 forEach 循环发送响应时,出现错误:发送后无法设置 header 。我用 google 搜索了它,但无法正确理解

array.forEach(function(data) {
db.collection.find({
_id: mongoskin.helper.toObjectID(data)
}).toArray(function(err, data1) {
if (err) return next(err);
console.log(data1);
res.send(data1);
})
})

最佳答案

由于循环,您的代码多次调用 res.send ;你不能这样做

res.send 是一个重载函数,可以通过多种方式调用,但无论您以何种方式使用它,它都会设置 header 并发送响应。把它想象成一个一体化的、试图成为智能的功能。

// not actual source code!
// just imagine res.send kinda like this
function send(body, headers, status) {
res.setHeaders(headers);
res.statusCode = status;
res.write(body);
res.end();
}

但是,如果您想分段编写响应,请使用 res.write 方法。完成后,您必须调用 res.end

res.setHeader(myHeaders);
myArray.forEach(
//...
res.write(something);
);
res.end();

关于javascript - 错误: Can't set headers after they are sent from a forEach loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com