gpt4 book ai didi

javascript - 在每个循环 Node js 中使用请求模块不会更新我的 JSON

转载 作者:行者123 更新时间:2023-12-03 02:38:46 25 4
gpt4 key购买 nike

这段代码可能有什么问题?我无法在 forEach 循环后获得更新的 json(变量 updatedDataJSON)输出,有人可以帮我吗?预先感谢,这是我的代码,我在这里遗漏了什么吗?

app.get('/getDifferences', (req, res) => {
let changed = false,
updatedJSON = { data: [] },
updatedDataJSON = { "url": "", "dta": "", "status": "unchanged" };
fs.readFile('output.json', 'utf-8', (err, data) => {
storedData = data && JSON.parse(data);
if (storedData) {
storedData.data.forEach((e) => {
request.get(e.url).on('res', (html) => {
updatedDataJSON.url = e.url;
updatedDataJSON.dta = e.dta;

if (e.dta && (e.dta.match(/<body[^>]*>[\s\S]*<\/body>/gi)[0] !== html.match(/<body[^>]*>[\s\S]*<\/body>/gi)[0])) {
changed = true;
updatedDataJSON.status = "changed";
updatedDataJSON.dta = html;
}
updatedJSON.data.push(updatedDataJSON);
});
});
console.log(updatedDataJSON);
}
});
res.end(JSON.stringify(updatedJSON))
});

最佳答案

Node js 是异步的。所以当get请求将被调用storedData.data length时间时,你必须在forEach循环中的get请求的callBack中结束响应。

这里我附上代码来演示这一点。

    app.get('/getDifferences', (req, res) => {
let changed = false,
updatedJSON = { data: [] },
updatedDataJSON = { "url": "", "dta": "", "status": "unchanged" };
fs.readFile('output.json', 'utf-8', (err, data) => {
var count = 0,
arraylength;
storedData = data && JSON.parse(data);
if (storedData) {
arraylength = storedData.data;
storedData.data.forEach((e) => {
request.get(e.url).on('res', (html) => {
updatedDataJSON.url = e.url;
updatedDataJSON.dta = e.dta;

if (e.dta && (e.dta.match(/<body[^>]*>[\s\S]*<\/body>/gi)[0] !== html.match(/<body[^>]*>[\s\S]*<\/body>/gi)[0])) {
changed = true;
updatedDataJSON.status = "changed";
updatedDataJSON.dta = html;
}
updatedJSON.data.push(updatedDataJSON);
count++;
if (count === arraylength) {
console.log(updatedDataJSON);
res.end(JSON.stringify(updatedJSON));
}
});
});
}
});
});

关于javascript - 在每个循环 Node js 中使用请求模块不会更新我的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48421196/

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