如何让我的代码在 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
查看有关原因的更多信息
我想让我的代码同步,我已经习惯了 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
查看有关原因的更多信息