如何让我的代码在 javascript 中同步

how do I make my code synchronus in javascript

我想让我的代码同步,我已经习惯了 python 但现在正在尝试 在量角器中测试东西,一些代码使用 javascript,这里的东西崩溃了,下面是我的代码:

describe('screenshot take', () => { 

    var listLength = urlList.length

      for (let i = 0; i < listLength; i++) {
         it('screenshot taken', () => {
          console.log("0")

          TakeScreenshot(  urlList[i],i)  
         console.log("1")

         });
    }
});



function  TakeScreenshot(url,rank){
    console.log("2")

    browser.get(url)
    console.log("3")

    browser.takeScreenshot().then((png) =>{
       console.log("4")
       var stream =  createWriteStream( ImagePath+'.png');  
       stream.write(Buffer.from(png, 'base64'));
       stream.end; 
      console.log("5")


     }); 

}

当尝试查看我的控制台时,我得到以下输出

0
2
3
1
4
5

但我希望它是

    0
    2
    3
    4
    5
    1

我尝试过使用 .then() 和 browser.sleep() 但我无法使用它 我尝试通读 async/await 但我不知道如何使用它。那么有人可以帮我解决这个问题

使用异步函数时,您需要在其他异步函数上使用 await 以使其余代码等待它们的响应。

describe('screenshot take', async () => { 

    var listLength = urlList.length

      for (let i = 0; i < listLength; i++) {
         it('screenshot taken', () => {

          console.log("0")

          await TakeScreenshot(  urlList[i],i)  

          console.log("1")

         });
    }
});



const TakeScreenshot = async (url,rank){
    console.log("2")

    browser.get(url)

    console.log("3")

    const png = await browser.takeScreenshot()

    console.log("4")

    var stream =  createWriteStream( ImagePath+'.png');  
    stream.write(Buffer.from(png, 'base64'));
    stream.end; 

    console.log("5")

}

请注意,不建议在异步函数中使用 for 循环。您可以在此处 https://eslint.org/docs/rules/no-await-in-loop

查看有关原因的更多信息