Javascript 木偶计-循环内的随机超时不工作

Javascript 木偶计-循环内的随机超时不工作,javascript,loops,timeout,puppeteer,Javascript,Loops,Timeout,Puppeteer,所以,我有这样的代码(只有这部分工作不正常) (异步()=>{ const browser=wait puppeter.launch({ 无头:错, //slowMo:250//减速250ms }); const page=wait browser.newPage(); //一些代码 //上面的代码起作用,下面是其中不起作用的部分: 等待页面。评估(()=>{ 功能延迟(超时){ 返回新承诺((解决)=>{ setTimeout(解析,超时); }); } 函数随机整数(最小值、最大值){ 返回

所以,我有这样的代码(只有这部分工作不正常)

(异步()=>{
const browser=wait puppeter.launch({
无头:错,
//slowMo:250//减速250ms
});
const page=wait browser.newPage();
//一些代码
//上面的代码起作用,下面是其中不起作用的部分:
等待页面。评估(()=>{
功能延迟(超时){
返回新承诺((解决)=>{
setTimeout(解析,超时);
});
}
函数随机整数(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
const farms=document.queryselectoral(“.startButton”);
for(设i=0;i<3;i++){
用于(农场中的const farm){
farm.click();
}
延迟(随机整数(820000920000));
}
});
})();
我想要的是,选择这个类的所有按钮,单击它们,然后等待一段时间,然后再次单击它们,但延迟函数在这里似乎不起作用-或者没有执行(但在代码的其他部分,它起作用,所以idk哪里有问题,我请求您的帮助!:D

#编辑

代码(添加了async和Wait,正如@Sheun Aluko所说)很好,由于网站安全系统的原因,它无法工作,所以我需要应用新的修复程序刷新/转到同一页面,并更改循环顺序,可能效率不高,但它可以100%工作。 下面是一个例子:

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    // slowMo: 250 // slow down by 250ms
  });

//SOME CODE THAT WORKS
//OUR PART BELOW

  for (let i = 0; i < 150; i++) {
    await page.goto("SOME_URL", {
      waitUntil: "networkidle2",
    });
    await page.evaluate(async (page) => {
      function delay(timeout) {
        return new Promise((resolve) => {
          setTimeout(resolve, timeout);
        });
      }
      function randomInteger(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
      }

      const farms = document.querySelectorAll('SOME_SELECTOR');

      for (const farm of farms) {
        farm.click();
      }
      await delay(randomInteger(840000, 960000));
    });
  }
})
(异步()=>{
const browser=wait puppeter.launch({
无头:错,
//slowMo:250//减速250ms
});
//一些有效的代码
//我们下面的部分
for(设i=0;i<150;i++){
等待page.goto(“某个URL”{
等待至:“networkidle2”,
});
等待页面。评估(异步(页面)=>{
功能延迟(超时){
返回新承诺((解决)=>{
setTimeout(解析,超时);
});
}
函数随机整数(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
const farms=document.querySelectorAll('SOME_SELECTOR');
用于(农场中的const farm){
farm.click();
}
等待延迟(随机整数(840000960000));
});
}
})

我可以看到
delay
函数返回一个承诺。在最后一行中,我认为应该调用
wait delay(randominger(820000920000))
,这样循环实际上会在下一次迭代之前等待

针对您提到的错误,发生这种情况是因为您传递给page.evaluate的函数未标记为异步。我对Puppeter不太熟悉,但您能否尝试将提供的函数标记为异步..即:

await page.evaluate( async () => { 
   ....
})

当我像你说的那样使用wait时,我收到:SyntaxError:wait仅在异步函数中有效请查看我上面编辑的答案来解决这个问题,谢谢,我们将在15分钟后看到。如果它工作,谢谢!:DStill not work;/,idk what to do;DHmm..很抱歉,也许其他更熟悉木偶师框架的人可以跳转在这一点上,我们需要帮助。。。
await page.evaluate( async () => { 
   ....
})