首页 > 解决方案 > 如何打破柏树块内的循环?

问题描述

    for (let i = 0; i < 14; i++) {
        cy.get('div .fc-left h2').then(($btn) => {
            if ($btn[0].innerText === fullDate) {
                break
            } else {
                cy.get('button[aria-label="next"]').click()
            }
        })
    }

我的代码是这样的。当我运行它时,Unsyntactic break会显示错误。它没有break

标签: javascriptloopscypressbreakqa

解决方案


您可以使用等待

async function shouldNext(val) {
  //const $btn = await cy.get('div .fc-left h2')
  const $btn = await fakeCyGet(val.value)
  if ($btn.innerText === 'fullDate') return Promise.resolve({
    done: true
  });
  //cy.get('button[aria-label="next"]').click()
  return val
}

async function fakeCyGet(i) {
  if (i == 5) return {
    innerText: "fullDate"
  }
  return {
    innerText: "fakeData"
  }
}

const asyncIterable = {
  [Symbol.asyncIterator]() {
    return {
      i: 0,
      next() {
        if (this.i < 14) {
          return Promise.resolve(shouldNext({
            value: this.i++,
            done: false
          }));
        }

        return Promise.resolve({
          done: true
        });
      }
    };
  }
};

(async function() {
  for await (let num of asyncIterable) {
    console.log(num);
  }
})();

虽然我的示例有一些模拟,但这是解决问题的方法。


推荐阅读