无法在量角器打字稿代码中跳出循环

Not able to come out of loop in protractor typscript code

我是量角器和打字稿的新手,正在编写使用它们编写的自动化测试代码。

我创建了一个方法

 private allElements = $$('.some-list li');

 public async getDateElement(calDate: string) {
     this.allElements.each(async function(element, index){
      let eDate = await element.$('p').getText();
      if( eDate === calDate){
          // I tried both these options
          return eDate // getting undefined value here 
          return element.$('p').click(); // element get clicked but not coming out of loop
      }
    });
 }

我尝试了另一种使用 for 循环的方法,但 break 关键字在这里不起作用

public async getDateElement(calDate: string) {
for (let element of await this.allElements) {
  let eDate = await element.$('p').getText();
  if (eDate === calDate) {
    element.$('p').click();
    break;
  }
 }
}

所以不知道如何 return 或退出 for 循环。我也用谷歌搜索,有人建议使用 try-catch 块并在日期匹配时抛出异常。那是唯一的解决办法吗?如果有人可以使用 promise 提供解决方案,将不胜感激:)

如果需要更多信息,请告诉我。

如果一切都是同步的,请尝试以下量角器方法链:

public getDateElement(calDate: string) {
    return this.allElements
    .map(element => element.$('p'))
    .filter(p => p.getText() === calDate)
    .click();
}

或者,如果 .getText() 是异步的,那么类似这样的事情,但可能与上面的 .map() 阶段(的异步版本):

public async geDateElement(calDate: string) {    
    return this.allElements
    .filter(async element => await element.getText() === calDate)
    .click();
}