gpt4 book ai didi

javascript - Node - 循环完成后向浏览器发送响应

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

我正在我的路线之一add-users 中发出POST 请求。我创建了一个名为 success 的数组。在 API POST 成功运行的每个循环中,我都会向数组添加一个字符串 'user displayed'。数组完成后,我想将带有成功数组的响应发送到浏览器。

我注意到一些奇怪的事情。当我输入 add-users 开头的 url 时,它会在我按 Enter 键导航到该页面之前运行循环。这看起来很奇怪? Node 是否正在监听并预测我将访问哪个 url?

这是我当前的尝试,但由于某种原因它不起作用。

app.get('/add-users', function (req, res) {
var success = [];
var count = 0;

users.forEach(function(user, i){

request({
url: url,
method: 'POST',
json: true
}, function(err, resp, body){
if (!err && resp.statusCode === 200) {
success.push('user added');
}
});

if(count === users.length) {
res.json(success);
}
});
});

最佳答案

关于浏览器在按 url 上的 Enter 键之前获取响应,这是非常不寻常的行为。也许您应该检查您的计算机是否被任何恶意软件感染!

关于您使用的代码,countforEach 循环中的任何位置都不会递增。所以它永远保持为 0 并且永远不等于 users.length。因此循环将结束,但永远不会发送响应。

此外,您正在代码中的错误位置测试 countusers.length 之间的相等性。

这段代码应该可以工作:

app.get('/add-users', function (req, res) {
var success = [];
var count = 0;

users.forEach(function(user){

request({
url: url,
method: 'POST',
json: true
}, function(err, resp, body){
if (!err && resp.statusCode === 200) {
success.push('user added');
}

count++; // <<=== increment count
//
if(count === users.length) { // and then test if all done
res.json(success);
}
});
});
});

关于javascript - Node - 循环完成后向浏览器发送响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41739865/

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