gpt4 book ai didi

javascript - 无法从递归 javascript 函数获取值数组

转载 作者:行者123 更新时间:2023-12-01 01:04:35 26 4
gpt4 key购买 nike

我正在抓取对 Instagram 上的帖子点赞的用户列表。下面的代码运行得很好:

await click(post);
await sleep(500);
var users = await findAll(user);
var userNames = users.map(async user => {
var userNameText = await user.getText();
return userNameText;
});
var result = await Promise.all(userNames);
console.log(result); // ['user1', 'user2'...]

但点赞模式最​​初仅显示 10 个用户。要查看其他用户,您必须不断滚动,而它一次只加载一个子集。以下递归函数不断向下滚动,以增量方式加载单个用户,以达到我想要获得的用户数量:

let likers = [];
await (async function theLoop(i) {
await driver.sleep(400);
findAll(user).then(async t => {
let liker = await t[8].getText();
await scroll(find(modal)); //Scroll inside the modal
await likers.push(liker); //PUSH LIKER TO ARRAY
console.log(liker);
if (--i) {
theLoop(i);
}
});
})(60);

问题是我无法从此函数获取所有用户的列表。如果我执行 console.log(likers) if 在填充数组之前立即触发。我在这个递归循环之后运行的任何函数都会发生同样的情况。我所做的一切都不起作用。

最佳答案

您的问题是您的递归函数不返回任何内容,并且您既不等待findAll().then(…)也不等待递归调用。另外,您在这里根本不需要递归,使用 async/await 您可以(应该)编写一个简单的循环:

for (var i=60; --i; ) {
await driver.sleep(400);
const t = await findAll(user); // don't use `then`
let liker = await t[8].getText();
await scroll(find(modal));
likers.push(liker); // nothing to `await` here
console.log(liker);
}

关于javascript - 无法从递归 javascript 函数获取值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55764397/

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