本文介绍JS中异步编辑的基础部分,包括async、promise和await。

async:标注异步方法

在JavaScript中,async关键字通常用于标注一个方法,以表明该方法是异步的。异步方法是指在执行过程中不会阻塞后续代码执行,而是会在后台进行,等待某些操作完成后再继续执行。

async function fetchData() {
  // 异步操作,比如网络请求
  let data = await fetch('https://api.example.com/data');
  console.log(data);
}

// 调用异步方法
fetchData();

上面的例子中,fetchData是一个异步方法,它通过fetch函数异步获取数据。通过async关键字,我们可以更清晰地表明这是一个异步操作。

promise:异步方法的承诺

异步方法的返回值通常是一个promise对象。Promise是一个表示异步操作最终完成或失败的对象,它是对异步操作的一种承诺,就像支票一样。

async function fetchData() {
  return new Promise((resolve, reject) => {
    // 模拟异步操作
    setTimeout(() => {
      resolve('一些数据');
    }, 2000);
  });
}

// 使用Promise
fetchData().then(data => console.log(data));

上述例子中,fetchData方法返回一个Promise对象,表示异步操作的最终结果。通过调用then方法,我们可以在异步操作完成后执行相应的逻辑。
当然对于promise,除了通过then进行处理,也可以通过await进行相关的处理。

await:等待异步操作完成

await关键字用于处理Promise对象,等待异步操作完成并获取其最终的返回值。它可以类比于将支票兑现,等待异步操作的结果。

// 调用了一些数据
async function getData() {
  // 模拟一些耗时的操作
  setTimeout(() => {}, 2000);
  console.log("step 2")
  // 调用本地8888端口的服务,并获取返回值(此接口恒定返回hello world,并且有一定的耗时)
  return httpUtil.get("http://127.0.0.1:8888/test")
}
// 通过数据做了一些事情
async function dosth(){
  console.log("step 1")
  // 等待真正的处理值,在此方法中,此处是同步操作
  let data = await getData();
  console.log("step 3 ", data)
}
console.log("step 0")
// 在外层调用,此处是异步操作
dosth();
console.log("step 4")

输出结果

step 0
step 4
step 1
step 2
step 3 Hello World