贝利信息

JavaScript如何实现异步编程_回调函数和Promise有什么区别?

日期:2026-01-03 00:00 / 作者:幻影之瞳
JavaScript异步编程核心是不阻塞主线程,回调函数易致“回调地狱”且错误难捕获,Promise通过状态管理、链式调用和统一错误处理提升可读性与组合能力。

JavaScript 的异步编程核心在于“不阻塞主线程”,回调函数和 Promise 都是实现方式,但设计思想、错误处理、可读性和组合能力差别明显。

回调函数:最基础的异步表达

回调函数是把一个函数作为参数传给另一个函数,在异步操作完成后被调用。比如 setTimeout 或老式 AJAX:

getUserById(123, function(user) {
  console.log(user.name);
  getPostsByUserId(user.id, function(posts) {
    console.log(posts.length);
  });
});

问题在于嵌套加深时容易形成“回调地狱”——逻辑难追踪、错误难捕获、流程难复用。每个回调都要手动检查 error 参数,且无法用 try/catch 捕获异步错误。

Promise:用状态管理替代嵌套调用

Promise 是一个对象,代表异步操作的最终完成(或失败)及其结果。它有三种状态:pending(进行中)、fulfilled(成功)、rejected(失败),且状态不可逆。

立即学习“Java免费学习笔记(深入)”;

关键区别总结

实际建议