【发布时间】:2018-12-02 19:46:01
【问题描述】:
我有一个使用 javascript 通过函数传递的数组,我看不出代码有任何问题,但它没有正确传递第一个数组,因此可以对其进行解析。
这个想法是第一个数组是 56 个项目,然后它调用 parseData 函数,该函数应该将该数组分成 7 个块。
这是两个函数:
static async validateRowValues() {
let data = [];
await cy.get('tr > td > div.dlCell')
.each(function (row) {
let d = row.get(0).innerText;
data.push(d);
});
console.log(data);
let response = await this.parseData(data);
console.log({response});
}
static async parseData(tData) {
console.log(tData);
let array = [];
let coll_array = [];
debugger;
await tData.forEach(async (v, index) => {
await array.push(v);
if (index % 6 === 0 && index !== 0) {
await coll_array.push(array);
array = [];
}
});
return coll_array;
}
parseData 中的第一个 console.log 确实返回了 56 个项目,但是当它到达 tData.forEach 时它已经完全丢失了它的数据,并且当它返回 coll_array 时解析返回一个空数组。
如果有人有任何想法?
【问题讨论】:
-
注意:我没有使用 cypress 的经验,但我不明白为什么你的第二个函数是
async并且里面有await。所有这些动作显然是同步的,所以对于async/await来说并不是什么。 -
我已经尝试调整代码以使第二个函数不是异步/等待,但仍然没有反映解析的结果。
-
另外,您的第一个函数不会返回任何内容。这是故意的吗?该功能与您提出的问题相关吗?我的意思是:您可以(出于调试目的)将
tData初始化为某个硬编码数组作为parseData的第一行。那你还有问题吗? -
有趣的是..您将上面的代码输入到网络浏览器的控制台中然后砰...它按预期工作。
标签: javascript arrays node.js cypress