Promise await表达式

2023-05-23 10:46:32 浏览数 (2)

await表达式

await表达式用于等待一个Promise对象的解析,并将解析后的结果返回。它可以放在任何返回Promise对象的函数调用前面,包括异步函数调用、Promise链的调用等。在等待期间,async函数会暂停执行,直到Promise对象的状态变为已解析。

以下是await表达式的基本语法:

代码语言:javascript复制
let result = await promise;

在上述语法中,promise是一个Promise对象,result是解析后的结果。在等待期间,async函数会暂停执行,直到promise对象的状态变为已解析。然后,解析后的结果会被赋值给result变量。

需要注意的是,await只能在async函数内部使用。如果在非async函数中使用await关键字,会导致语法错误。

示例

下面是一个示例,演示了如何使用await表达式等待Promise对象的解析:

代码语言:javascript复制
function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function fetchData() {
  console.log('Fetching data...');
  await delay(2000); // 模拟异步操作
  console.log('Data fetched!');
  return 'Data'; // 返回数据
}

async function processData() {
  try {
    const data = await fetchData(); // 等待fetchData函数完成
    console.log('Processing data:', data);
    // 其他数据处理逻辑
  } catch (error) {
    console.error('Error occurred:', error);
  }
}

processData();

在上述示例中,我们定义了两个async函数:fetchData()processData()。在fetchData()函数中,我们模拟了一个异步操作,通过await关键字等待2秒钟后,返回一个数据。在processData()函数中,我们调用了fetchData()函数并使用await关键字等待其完成。在try...catch语句块中,我们对可能发生的错误进行捕获和处理。

当我们调用processData()函数时,它会按照顺序执行异步操作。在控制台输出中,我们可以看到执行过程中的日志信息,包括"Fetching data..."、"Data fetched!"以及"Processing data: Data"。

0 人点赞