javascript - 无法从函数 Javascript 中更新变量
问题描述
我正在尝试从 rows.each() 中更新 rowNumber 变量,但是当我之后 console.log 它时,它仍然设置为 null。我究竟做错了什么?我什至尝试定义 var rowNumber 'higher',结果相同。
var licenceNumber = 233521673;
it('should open created Driver Licence', function() {
var rowNumber = null;
var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));
rows.each(function(element, index) {
element.getText().then(function (text) {
if (text.includes(licenceNumber)) {
rowNumber = index;
return true;
}
});
});
console.log('rowNumber = ', rowNumber);
});
解决方案
使用Promise.all等到所有的 Promise 都解决了:
var licenceNumber = 233521673;
it('should open created Driver Licence', function() {
var rowNumber = null;
var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));
var promises = [];
rows.each(function(element, index) {
var promise = element.getText().then(function (text) {
if (text.includes(licenceNumber)) {
rowNumber = index;
}
});
promises.push(promise);
});
return Promise.all(promises).then(function () {
console.log('rowNumber = ', rowNumber);
});
});
请注意,链接到 Promise.all 的承诺也会返回给 Mocha。这很重要,因为它告诉 Mocha 这个测试是异步的,并且在返回的承诺解决或拒绝之前不会被认为是完整的。在此处阅读有关此内容的更多信息。
推荐阅读
- sql - 如何在一个 SQL 查询中计算几个表中的相同列
- linux - rm 一个随机文件后不再显示文件
- image - 在不损失质量的情况下将 SVG 转换为 PNG 和 PDF?
- c - C代码/BMI/需要帮助 - BMI值结果总是错误的
- wso2 - WSO2 APIM Analytics 3.2.0 仪表板登录页面未打开
- javascript - 如何使用 JQuery/AJAX 检索容器中存在的所有下拉列表的选定值?
- java - 此代码添加了两次相同的“myRndmNos”数组。但我希望它添加未排序的“myRndmNos”和排序的“冒泡排序”数组。我如何得到它?
- ros - 为什么我的凉亭从一个空旷的世界开始?
- unity3d - 在编辑器中标记生成点的位置
- javascript - 获取此 React.Children.only 预计会收到单个 React 元素子错误,以便在 Next.js中使用