异步编程

#JavaScript #异步 #Promise #async

JavaScript 异步编程#

Promise#

const fetchData = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve("数据加载完成"), 1000);
  });
};

fetchData().then(data => console.log(data));
💡 提示

Promise 是异步编程的基础,表示一个异步操作的最终完成或失败。


async/await#

async function loadData() {
  try {
    const data = await fetchData();
    console.log(data);
  } catch (error) {
    console.error("加载失败:", error);
  }
}
技巧

async/await 是 Promise 的语法糖,让异步代码看起来像同步代码,更易阅读和维护。


异步模式对比#

// 回调函数(Callback Hell)
getData(function(a) {
  getMoreData(a, function(b) {
    getEvenMoreData(b, function(c) {
      console.log(c);
    });
  });
});

常用 API#

Promise.all()
// 并行执行多个异步操作
const [users, posts] = await Promise.all([
  fetchUsers(),
  fetchPosts()
]);
Promise.allSettled()
// 等待所有操作完成,无论成功或失败
const results = await Promise.allSettled([
  fetchUsers(),
  fetchPosts()
]);

参考资料#