gpt4 book ai didi

javascript - 在循环中构建数组后发送后无法设置 header

转载 作者:行者123 更新时间:2023-12-01 03:39:40 24 4
gpt4 key购买 nike

我正在尝试构建一个对象数组并发送给客户端。接收错误:

    throw new Error('Can\'t set headers after they are sent.');
^

Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11)
at ServerResponse.header (D:\Dropbox (Personal)\coding\coinTracker5\node_modules\expr ess\lib\response.js:725:10)
at ServerResponse.send (D:\Dropbox (Personal)\coding\coinTracker5\node_modules\expres s\lib\response.js:170:12)
at ServerResponse.json (D:\Dropbox (Personal)\coding\coinTracker5\node_modules\expres s\lib\response.js:256:15)
at D:\Dropbox (Personal)\coding\coinTracker5\routes\index.js:58:11
at D:\Dropbox (Personal)\coding\coinTracker5\node_modules\cryptox\lib\index.js:51:9
at D:\Dropbox (Personal)\coding\coinTracker5\node_modules\cryptox\lib\bitfinex.js:93: 13
at D:\Dropbox (Personal)\coding\coinTracker5\node_modules\cryptox\lib\bitfinex.js:72: 13
at Request._callback (D:\Dropbox (Personal)\coding\coinTracker5\node_modules\bitfinex -api-node\rest.js:95:16)
at Request.self.callback (D:\Dropbox (Personal)\coding\coinTracker5\node_modules\requ est\request.js:187:22)

我认为 res.json(rates) 仅触发一次,所以我不确定为什么 header 被设置两次?

如果有更好的方法来构建这个数组并将其发送给客户端,请赐教!谢谢

var rates = [];
for (var i = 0, len = cryptoxArray.length; i < len; i++) {

cryptoxArray[i].getRate({
pair: "XBT_USD"
}, function(err, rateResponse) {
if (!err)
rates.push(rateResponse);

if (i == len) {
console.log('rates: ' + rates);
res.json(rates);
}
});

最佳答案

当任何回调被调用时,我已经等于长度,你不能使用这样的循环。我的建议是使用 promise 并为此或 iife 执行 Promose.all。

生活

for(i, len, etc){
(function(index){do your stuff here})(i)
}

我个人最喜欢的就是类似的东西。

import Promise from 'bluebird';

Promise.all(
cryptoxArray.map(
item => Promise.promisify(item. getRate)({pair: "XBT_USD"})
.then(rate => rate, error => null)
)
)
.then(rates => rates.filter(rate => rate !== null))
.then(res.json);

关于javascript - 在循环中构建数组后发送后无法设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993318/

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