方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用 JS 默认是同步调用还是异步调用

方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用 JS 默认是同步调用还是异步调用

一、方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用

这叫同步调用

简单区分:

  • 同步调用:A 等 B 执行完,拿到结果后,A 才继续往下执行。(排队、阻塞等待)
  • 异步调用:A 告诉 B 去执行,不等待 B 的结果,A 立刻继续往下执行自己的事情。(发个消息就不管了,B 执行完通常通过回调或通知告诉 A)

需要我帮你展开讲讲异步调用的常见实现方式吗?比如回调、Promise、async/await 这些。

二、JS 默认是同步调用还是异步调用

JavaScript 默认是单线程 的,所以它的基础执行模型是同步的(即从上到下,一行一行地执行,前一行不执行完,后一行绝对不执行)。

但是,JS 又有一套非常核心的异步机制 (Event Loop 事件循环)。所以更准确的说法是:JS 整体是同步执行代码的,但遇到异步任务时,会把它们交给浏览器或 Node.js 去处理,等时机成熟再拿回主线程执行。

举个简单的例子:

javascript 复制代码
console.log('A'); // 同步,立即执行

setTimeout(() => {
  console.log('B'); // 异步,被挂起,等主线程空闲了再执行
}, 0);

console.log('C'); // 同步,立即执行

输出结果是: A -> C -> B

总结一下:

  • 普通代码 :默认是同步的。
  • 特定操作 (如网络请求、定时器、DOM事件、文件读取等):默认是异步的。

要不要我帮你梳理一下 JS 异步编程的演进过程?从回调函数到 Promise 再到 async/await,一步步看为什么 async/await 能解决"回调地狱"的问题。

三、async 是什么意思

在 JavaScript 中,asyncasynchronous(异步)的缩写。它是一个关键字,专门用来声明一个函数是"异步函数"。

结合我们刚才聊到的内容,你可以这样理解它的作用:

1. 自动包装 Promise

只要在一个函数前面加上 async,这个函数的返回值就会自动变成一个 Promise 对象。即使你在函数里直接 return "Hello",它也会自动变成 Promise.resolve("Hello")

2. 开启"等待"权限

async 函数内部允许使用另一个关键字 awaitawait 的意思是"等待",它能让异步代码看起来像同步代码一样,一行一行地执行。

举个直观的例子:

javascript 复制代码
async function fetchData() {
  // await 会让代码在这里"暂停"等待,直到请求完成
  const response = await fetch('https://api.example.com/data'); 
  const data = await response.json(); // 等数据解析完再继续
  
  return data; // 最终返回的 data 会被自动包装成 Promise
}

总结一下:

async 就像是给函数贴了一个标签,告诉 JavaScript 引擎:"这个函数里面有异步操作,请帮我把它变成 Promise,并允许我在里面使用 await 来优雅地等待结果。" 它的核心价值就是让原本复杂的异步代码,写起来像同步代码一样直观好读。


要不要我帮你对比一下 async/await 和 Promise 链式调用的写法区别?一眼就能看出为什么它能解决回调地狱。

相关推荐
星栈独行13 分钟前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
qq_4480111634 分钟前
C语言中的变量和函数的定义与声明
android·c语言·开发语言
孫治AllenSun2 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
c238563 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
浅水壁虎3 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥3 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
moonsims4 小时前
星闪在跨域无人化系统作用
开发语言·php
Iruoyaoxh4 小时前
栈和队列~
java·开发语言
Hrain-AI5 小时前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
mONESY5 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript