全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 1 篇文章 20 道配套习题

JS 异步编程入门

专题说明

本专题系统讲解JavaScript异步编程入门知识,涵盖回调函数概念、Promise对象创建与使用、async/await语法糖、事件循环机制、微任务与宏任务优先级等内容,帮助理解JavaScript单线程异步执行的原理。

学习目标

  1. 理解回调函数的概念与应用场景
  2. 掌握Promise的三种状态与状态不可逆特性
  3. 学会Promise链式调用与错误处理
  4. 掌握async/await语法与try-catch错误处理
  5. 理解async/await与Promise的关系
  6. 掌握事件循环的基本执行流程
  7. 区分微任务与宏任务及执行优先级
  8. 学会分析异步代码的执行顺序

学习内容

本专题涵盖以下核心知识点:

  • 回调函数:回调函数定义、同步回调与异步回调、应用场景
  • Promise:三种状态、状态不可逆、链式调用、Promise.all、错误处理
  • async/await:async函数声明、await等待Promise、try-catch错误处理、与Promise的关系
  • 事件循环:单线程执行、调用栈与任务队列、执行流程
  • 微任务与宏任务:微任务来源、宏任务来源、执行优先级、执行顺序分析

学习建议

  1. 理解JavaScript单线程异步执行的原理
  2. Promise状态只能改变一次,理解状态不可逆特性
  3. async函数总是返回Promise,await等待Promise完成
  4. Promise.then回调是微任务,setTimeout回调是宏任务
  5. 微任务优先级高于宏任务,在每个宏任务后清空微任务队列
  6. 练习分析异步代码执行顺序,掌握事件循环机制
  7. 注意setTimeout最小延迟4ms,不是立即执行

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
判断题

回调函数是指将一个函数作为参数传递给另一个函数,并在特定时机被调用的函数。

A

B

2
单选题

以下关于回调函数的说法,正确的是:

A

回调函数必须是匿名函数

B

回调函数只能用于异步操作

C

回调函数是作为参数传递给其他函数的函数

D

回调函数必须有返回值

3
单选题

Promise是JavaScript中用于处理异步操作的对象,它有几种可能的状态?

A

2种

B

3种

C

4种

D

5种

4
单选题

以下关于Promise状态的描述,正确的是:

A

Promise状态可以多次改变

B

Promise只能从Pending变为Fulfilled

C

Promise状态一旦确定就不可再改变

D

Promise总是从Rejected变为Fulfilled

5
单选题

Promise的.then()方法中的回调函数在事件循环中被归类为:

A

同步任务

B

宏任务

C

微任务

D

延迟任务

6
多选题

以下关于Promise.all()的正确描述有:

A

所有Promise都成功才返回成功

B

任一Promise失败则立即返回失败

C

返回结果按传入顺序排列

D

空数组传入直接返回成功

7
多选题

Promise中处理错误的方式包括:

A

使用.catch()方法

B

使用.then()的第二个参数

C

使用try-catch包裹Promise构造

D

在.then链末尾添加.catch

8
单选题

async关键字用于声明异步函数,以下正确的async函数声明是:

A

async function myFunc() {}

B

function async myFunc() {}

C

myFunc async function() {}

D

function myFunc() async {}

9
单选题
A

创建一个新的Promise

B

等待Promise完成并获取其结果

C

将同步函数转为异步函数

D

取消Promise的执行

10
单选题

async函数的返回值特点:

A

返回普通值,不是Promise

B

总是返回一个Promise对象

C

只有错误时返回Promise

D

必须显式返回Promise

11
单选题

async函数中await的Promise失败时,应该如何处理错误?

A

使用.catch()方法

B

使用try-catch语句

C

使用.then()的第二个参数

D

错误会自动消失

12
多选题

async/await与Promise的关系是:

A

async/await是Promise的语法糖

B

async函数返回Promise

C

await等待Promise完成

D

async/await可以替代所有Promise用法

13
多选题

async函数中遇到await时,会发生:

A

async函数暂停执行,等待Promise完成

B

函数外的同步代码继续执行

C

await后面的代码作为微任务排队

D

await后面的代码作为宏任务排队

14
单选题

JavaScript事件循环(Event Loop)的主要作用是:

A

创建新的线程执行任务

B

监控和调度异步任务的执行

C

替代所有回调函数

D

同步执行所有代码

15
单选题

事件循环中,微任务和宏任务的执行顺序是:

A

宏任务优先于微任务

B

微任务优先于宏任务

C

按添加顺序依次执行

D

随机执行

16
判断题

JavaScript的事件循环在单线程中运行,通过任务队列实现异步操作的非阻塞执行。

A

B

17
单选题

以下哪个属于微任务(Microtask)?

A

setTimeout的回调

B

setInterval的回调

C

Promise.then的回调

D

DOM事件回调

18
单选题

分析以下代码的输出顺序:

JavaScript
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
A

1, 2, 3, 4

B

1, 4, 2, 3

C

1, 4, 3, 2

D

1, 3, 4, 2

19
单选题

分析以下代码的输出顺序:

JavaScript
console.log('start');
setTimeout(() => {
  console.log('timeout');
  Promise.resolve().then(() => console.log('promise1'));
}, 0);
Promise.resolve().then(() => {
  console.log('promise2');
  Promise.resolve().then(() => console.log('promise3'));
});
console.log('end');
A

start, end, promise2, promise3, timeout, promise1

B

start, end, promise2, timeout, promise3, promise1

C

start, end, timeout, promise2, promise3, promise1

D

start, end, promise2, promise1, promise3, timeout

20
判断题

微任务会在当前宏任务执行完毕后立即执行,在下一个宏任务开始之前。

A

B

← 上一个专题 JS 对象与数组
下一个专题 → JS 异步进阶与并发控制

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库