gpt4 book ai didi

javascript - 数据没有插入数组nodejs

转载 作者:行者123 更新时间:2023-11-30 20:30:37 25 4
gpt4 key购买 nike

我有一个函数,它接受一个 url 数组并使用 npm 包“read-titles”获取这些 url 的标题。它成功地 console.log 标题但没有将其插入数组。数组打印为空。代码是

function getTitleArray(addresses) {
var titles = [];
if (addresses.length > 1) {
addresses.forEach((urls) => {

console.log(urls.search('http'));
if (urls.search('http://') == -1) {
urls = 'http://' + urls;
}

readTitle(urls).then((title) => {
titles.push(title);
console.log(title);
}, (err) => {
res.status(400).send(err);
});

});
}
console.log('Titles are: ' + titles);
return titles;
}

最佳答案

正如@Mark_M 所说,您有一个异步代码,因此您必须制作一个回调系统以在所有 readTitle 调用结束时访问标题。

这是一种你可以使用的递归方式:

function getTitleArray(addresses, callback) {

var titles = [];
if (addresses.length > 1) {

let syncCallReadTile = function (it = 0, callback) {
let url = addresses[it];
if (url.indexOf('http://') == -1) {
url = 'http://' + url;
}
readTitle(url).then((title) => {
titles.push(title);
it++;
if (it == addresses.length) {
callback(null, titles);
}
else {
syncCallReadTile(it, callback);
}
}, callback);
};

syncCallReadTile(0, callback);

}
}

getTitleArray([], (err, titles) => {
if (err) {
res.status(400).send(err);
}
else {
console.log("Title :", titles);
}
})

关于javascript - 数据没有插入数组nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372647/

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