javascript - 如何在循环中处理 Promise
问题描述
我在下面有一段代码:
browser.sleep(2000).then(function(){
element.all(by.xpath('one xpath')).then(function(elements){
for(let elm of elements){
elm.getText().then(function(text){
if(text == "ButtonA"){
elm.click();
}
})
}
})
});
funcB();
在
我知道funcB()
之前已经执行了,我在 for 循环中使用了 Promise。elm.click()
它会出错。而且我已经尝试了一些我在互联网上找到的解决方案,但到目前为止我还没有找到如何在运行elm.click()
之前进行工作funcB
。请帮忙!
解决方案
async/await
如果你使用量角器而不是.then
像这样,你会惊讶于小学生可以使用量角器
it('test case', async () => {
await browser.sleep(2000)
let elementArrayName = element.all(by.xpath('one xpath'));
for (let i = 0; i<await elementArrayName.count(); i++) {
let text = await elementArrayName.get(i).getText();
if(text === "ButtonA"){
await elementArrayName.get(i).click();
}
}
// IMPORTANT!
// I don't know what your funcB is,
// but I have a feeling it returns a promise and thus needs await too
await funcB();
});
你现在喜欢你的代码吗?
所以两者都.then
指示await
javascript停止直到promise得到解决,但第二个不需要你构建这些无尽的胡夫金字塔并保持简单、可读和可调试
推荐阅读
- access-token - 使用从 JavaScript 客户端收到的令牌在服务器上创建社交连接
- javascript - Javascript中一个类的绑定方法到另一个类的eventListener
- php - 产品编辑电子商务
- java - 将另一个方法值显示给另一个方法
- c# - 当前上下文中不存在名称“InitializeComponent”(c#,xamarin)
- mysql - Pomelo MySQL (.NET Core) 在数据库故障后无法恢复
- powershell - 将数组输出到字符串
- javascript - 将部分 json(当前作为字符串)分配给 JavaScript 中的变量
- php - 用于 WooCommerce 3 中产品变化的 Ajax 添加到购物车按钮
- python-3.x - 识别连接组件中的边 - Python