为了账号安全,请及时绑定邮箱和手机立即绑定

承诺中的setTimeout-如何解决以及为什么它只运行一次?

承诺中的setTimeout-如何解决以及为什么它只运行一次?

拉莫斯之舞 2021-04-20 13:14:20
我想基于Promise中的setTimeout模拟基于随机时间的鼠标滚动。我的目标是继续向下滚动到网页的底部:应重复调用autoScroll函数,直到到达底部为止,然后解决Promise。当前代码仅运行一次,然后出现2个错误:未捕获的ReferenceError:未定义loopScroll(在浏览器控制台中)UnhandledPromiseRejectionWarning(在VSCode中)。async function loopScroll(page) {     await page.evaluate(async () => {        await new Promise((resolve, reject) => {            let rand = Math.round(Math.random() * (3000 - 500)) + 500;            setTimeout(function () {                function autoScroll() {                    let scrollHeight = document.body.scrollHeight;                    let currentHeight = 0;                    let distance = 100;                    window.scrollBy(0, distance);                    currentHeight += distance;                    if (currentHeight >= scrollHeight) {                        resolve();                    }                }                autoScroll();                loopScroll(page);            }, rand);        });    });};这个异步-承诺的事情让我有些困惑,我对他们没有太多的经验,所以我真的不知道我在做什么错。提前致谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信