如何解决异步功能未在等待中等待
我需要向下滚动才能执行某些操作。我的诺言功能不在等待行中等待。我该如何解决这个问题?
let scrollingPromise = new Promise(async (resolve,reject) => {
// I need this part to be done before resolving
await page.evaluate(() => {
const scrollingWindow = document.querySelector('.section-layout.section-scrollbox.scrollable-y.scrollable-show');
var scrollCount = 0;
function scrollFunction(){
setTimeout(()=>{
scrollingWindow.scrollBy(0,5000);
scrollCount++;
if(scrollCount < 5){
scrollFunction();
}
},3000);
};
scrollFunction();
});
// but it resolves instantly doesn't wait for previous await
resolve();
});
//this .then() runs before my scrolling
scrollingPromise.then(async () => {
// ...
}
解决方法
您正在混合await
和Promise语法。您正在等待一个不返回Promise的异步函数,因此它无法工作。我相信您正在尝试这样做:
let scrollingPromise = new Promise((resolve,reject) => {
page.evaluate(() => {
const scrollingWindow = document.querySelector('.section-layout.section-scrollbox.scrollable-y.scrollable-show');
var scrollCount = 0;
function scrollFunction() {
setTimeout(() => {
scrollingWindow.scrollBy(0,5000);
scrollCount++;
if (scrollCount < 5) {
scrollFunction();
} else {
resolve() // <-- Done,resolve here
}
},3000);
};
scrollFunction();
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。