循环结束时代码的哪一点?

时间:2017-12-19 23:09:10

标签: javascript selenium

我正在探索github以获取Selenium Webdriver框架的最佳实践,我发现代码如下:

async function waitForVisible(driver, locator, retries = 3) {
    try {
        const element = await driver.findElement(locator);
        await driver.wait(until.elementIsVisible(element), WAIT_TIME_OUT)
    } catch (err) {
        throw new Error(`Element "${locator.toString}" is not visible after maximum retries, error message: ${err.message}`)
    }
    await driver.sleep(WAIT_TIME_BEFORE_RETRY);
    return waitForVisible(driver, locator, retries - 1)
  }

如您所见,看起来该函数无限递归,并且只能通过抛出异常来结束。但我正在测试这段代码很多,我注意到它结束时没有抛出异常。

问题是它是如何可能的以及“循环”结束的时间/情况?我尝试尽可能地理解代码。

1 个答案:

答案 0 :(得分:-2)

我发现使用return语句有效。