异步匿名函数:那么()必要吗?

时间:2018-01-18 13:14:15

标签: javascript asynchronous async-await

请参阅以下code

'use strict';

const {Builder, By, Key, until} = require('..');
const {Options} = require('../chrome');

(async function() {
  let driver;
  try {
    driver = await new Builder()
        .forBrowser('chrome')
        .setChromeOptions(new Options().androidChrome())
        .build();
    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
  } finally {
    await driver && driver.quit();
  }
})().then(_ => console.log('SUCCESS'), err => console.error('ERROR: ' + err));

我的问题是:.then(_ ...何时会被召唤?异步函数不返回任何内容;此外,它似乎捕捉到了所有可能的问题,除了最后,在那个"最后"。所以...是.then(那么它会捕获驱逐驱动程序的错误吗?或者还有更多?

1 个答案:

答案 0 :(得分:0)

当你在函数中抛出一个错误时,你的错误处理程序就会被调用。

(async function() {
      throw 1;
    })()
    .then(_ => console.log('SUCCESS'), err => console.error('ERROR: ' + err))

此外,对于完整功能块,您不需要try-catch。这就是你当时的第二个论点将会处理的事情。