【问题标题】:Array.toString returns empty outside of loopArray.toString 在循环外返回空
【发布时间】:2020-02-12 12:26:30
【问题描述】:

我是 JavaScript 新手,如果这是一个愚蠢的问题或重复问题,我很抱歉。

我有一个数组和循环,在我每次记录的循环中,它会返回如下内容: A1, A1 A2, A1 A2 A3... 以此类推,直到完成循环。

最后我尝试记录最终的 Array 值,它返回空。

有什么想法吗?

  var testArray: any = new Array();
  var test: any;

  cy
    .get('element')
    .each(function ($el, index) {
      test= $el.text();
      testArray.push(test);
      cy.log(testArray.toString())
    })
  cy.log(testArray.toString())

谢谢

【问题讨论】:

  • 它是异步的。使用cy.get().each().then(() => cy.log())
  • 我不熟悉 cypress,但看起来选择器根本没有返回任何元素,或者 .get('element') 是异步的,console.log 在循环结束之前执行。但正如我所说,我对柏树不熟悉
  • 这是一个异步问题。尝试使用 .then() 方法

标签: javascript arrays tostring cypress


【解决方案1】:

您可以使用.then();引用cypress documentation for .then():

.then() 的建模方式与 Promises 在 JavaScript 中的工作方式相同。回调函数返回的任何内容都会成为新的主题,并将流入下一个命令(未定义的除外)。

试试这样的:

var testArray: any[] = new Array();

cy
    .get('element')
    .each(($el) => {
        testArray.push($el.text());
        cy.log(testArray.toString());
    ).then(() => cy.log(testArray.toString())
});

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2016-08-23
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多