【发布时间】:2019-07-27 20:14:51
【问题描述】:
我想让我的代码同步,我习惯了 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 阅读但我不知道如何使用它。所以有人可以帮我解决这个问题
【问题讨论】:
-
不要。使您的代码顺序化,但保持异步。
-
@Bergi 为什么会这样?
-
这是因为
browser.takeScreenshot()返回了一个承诺。承诺需要时间来解决,除非您等待承诺解决,否则您的console.log("1")将在.then之前触发。 -
@johnsmith 如果可以解决您的问题,请记住将答案标记为已接受的答案 :)
标签: javascript asynchronous protractor synchronous