loops - 需要在外部使用该计数器变量,因为如果我调用该函数没有得到输出返回
问题描述
checkGridData(name: string, searchObj: ElementArrayFinder) {
if (name != "") {
let counter = 0;
let beforesplit = name;
let aftersplit = beforesplit.split("|");
var countval = searchObj.count();
return searchObj.count().then((count) => {
for (let i = 0; i < aftersplit.length; i++) {
let countval = searchObj.count();
// expect(count).toBe(expectedRecords[i]);
for (let j = 0; j < count; j++) {
searchObj.get(j).getText().then(function (text) {
if (text.indexOf(aftersplit[i]) !== -1) {
expect(text).toContain(aftersplit[i]);
++counter
//console.log("counter inside loop is" + counter)
}
return counter;
});
}
}
});
}
}
我是量角器的新手。我在下面写了一个函数
我在另一个函数中调用它。
var abc = this.CheckGridData(ProductData.AddEquipment.EquipmentSelection, ProductObj.ele_equipmentvalidation)
console.log("Counter value returned:" + abc)
我收到了这个错误
返回的计数器值:ManagedPromise::5760 {[[PromiseStatus]]: "pending"}
我试图做承诺,但我不知道如何解决承诺。如何在上面的 for 循环内部解决,以便我可以使用它并了解这个概念?我尝试了各种网站,但我不明白如何解决。
解决方案
因为函数 CheckGridData
返回一个promise,所以变量abc
是一个promise。
要消耗承诺的最终价值,您必须使用then()
如下:
checkGridData(name: string, searchObj: ElementArrayFinder) {
if (name != "") {
let counter = 0;
let beforesplit = name;
let aftersplit = beforesplit.split("|");
return searchObj.getText().then((texts) => {
// texts is an string array of text of all elements of searchObj
for (let i = 0; i < aftersplit.length; i++) {
if(texts.includes(aftersplit[i])) {
++counter;
}
}
return counter;
};
}
}
var abc = this.CheckGridData(ProductData.AddEquipment.EquipmentSelection,
ProductObj.ele_equipmentvalidation)
abc.then(function(count){
console.log(count);
})
推荐阅读
- flutter - 如何使单选按钮文本可点击?
- algorithm - 将点均匀放置在球体内的算法
- r - 并发shinyapp 用户如何使用shinyproxy 和shiny 服务器上的内存和磁盘空间?
- vba - 打印报告的指定页面
- laravel - 工匠存储后无法访问视图中的存储/公共/文件夹:link laravel
- python - 无法发送请求、OpenSSL 密钥和证书错误
- angular - 为什么数字列的排序在 ag-grid 中不起作用?
- javascript - 将文档批量提交到 Google Firestore 数据库、node.js 和 promise 问题
- python - Pyodbc 从存储过程中提取结果集
- python-3.x - 有没有办法 vstack() 一个非常大的数组