javascript - 数组不更新
问题描述
我正在做一些浏览器自动化并最近开始使用 javascript。目前,我对以下内容感到非常困惑:
module.exports = {
main_page(browser) {
var pos;
var tmp = []; //A
browser
.url(myUrl)
.waitForElementVisible('body', 1000)
.assert.elementPresent('#id > ul > li:nth-child(1)')
for (var i = 1 ; i <= 6; i+=1){
browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
}
tmp.forEach(function(element) { //C
console.log(element);
});
...
browser.end();
},
}
我正在尝试推pos
入我的数组tmp
,以便以后可以使用它来做一些事情。
我无法理解的是为什么我的数组不A
被我的代码更新B
。我的 forEach atC
没有记录任何内容。有人可以帮助我了解正在发生的事情或解释如何正确地做到这一点吗?
欢迎任何意见,谢谢。
解决方案
这篇 StackOverflow帖子的答案实际上可能就是您正在寻找的。
browser.getText 返回一个承诺,所以你应该做这样的事情
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promise 基本上与异步数据一起使用。查看此https://developers.google.com/web/fundamentals/primers/promises以了解有关承诺的更多信息。
推荐阅读
- flutter - 如何在颤振中创建以下形状?
- visual-studio-code - 使用 vscode-remote ssh 时跨设备使用相同的终端会话
- javascript - 如何在 JavaScript 中处理来自另一个域的图像?
- security - 动物园管理员法定人数。PKIX 路径构建失败。找不到到所请求目标的有效证书路径
- postgresql - 不能在 postgresql 中将声明性分区与继承结合起来
- arrays - 无法按字母顺序对数组进行排序
- javascript - 块作用域如何访问封闭作用域
- java - 属性“值”预期数字锯“”的错误值“”,收到此错误
- reactjs - React JS 从本地机器上传音频并在浏览器中播放
- hashmap - 我想通过在 java 中使用 hashmap 从给定的字符串中找到 Duplicates。我想以我的方式做?