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

问题描述 投票:1回答:1

我正在探索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)
  }

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

问题是它是如何可能的以及“循环”在什么点/情况下结束?我试着尽可能地理解代码。

javascript selenium
1个回答
-2
投票

我发现使用return语句有效。

© www.soinside.com 2019 - 2024. All rights reserved.