Promise async函数

2023-05-23 10:40:07 浏览数 (1)

async函数

async函数是一个特殊的函数,它内部包含异步操作,并且返回一个Promise对象。在async函数中,我们可以使用await关键字来等待一个Promise对象的解析,并在解析完成后继续执行下一行代码。

以下是async函数的基本语法:

代码语言:javascript复制
async function functionName() {
  // 异步操作
  // 使用await等待Promise对象的解析
  // 继续执行下一行代码
}

await关键字

在async函数内部,可以使用await关键字来等待一个Promise对象的解析。await会暂停async函数的执行,直到Promise对象的状态变为已解析(resolved)并返回结果,然后将结果赋值给变量。

以下是await关键字的基本语法:

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

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

示例

下面是一个示例,演示了如何使用async函数和await关键字处理异步操作:

代码语言: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 人点赞