前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库JavaScript · 异步编程面试题
面试知识索引 · 分类、标签与搜索

JavaScript · 异步编程面试题,48 道完整答案

JavaScript · 异步编程面试题第 1 页,显示第 1–48 题,共找到 48 道完整解析,可继续按分类、标签与关键词缩小范围。

48筛选结果
52技术分类
178检索标签
1索引分页
按分类建立知识面,再用标签和搜索定位问题

每页只渲染 50 道题。分类与标签分页可抓取,自由搜索结果不会制造无限 SEO 页面。

快速定位

分类、标签与关键词搜索

清除全部筛选
题库检索
技术分类52 个
全部分类5000JavaScript285AI Agent511浏览器301React281AI 开发262CSS240Node.js217TypeScript206Vue180前端工程化138React Native135
查看全部 52 个分类
操作系统135数据库134Docker95计算机网络94API 设计90Kubernetes90HTML89Redis89全栈开发88分布式系统88系统设计86HTTP85Next.js60Angular58Linux53Nuxt51PostgreSQL46可观测性46设计模式46小程序45身份与权限45无障碍44MongoDB43PWA43Web 安全43Git42前端测试42前端性能41WebAssembly40测试40AI 工程37SvelteKit37Go35前端数据管理30React Router29AI 全栈28Svelte27算法12Java10数据结构5前端手写题3
JavaScript 标签22 个
全部标签异步编程48值与类型50数据处理45模块与语言机制40函数与作用域39数组与集合38对象与原型35异步与 Promise34性能优化7并发编程5构建工具5流处理4缓存4表单2事件循环1
查看其余 7 个标签
作用域与函数1容器化1异步与浏览器1手写与交互性能1测试1相等比较1算法1
当前页01 / 1

正在显示第 1–48 题

JavaScript48
第 1 页

本页面试问题

按稳定语义路径排序

  1. 0001
    JavaScript异步与浏览器

    JavaScript 事件循环如何执行?

    以浏览器 Event Loop 为范围,逐步分析同步代码、Promise、queueMicrotask 与 setTimeout 的执行顺序,讲清微任务检查点、渲染时机与常见面试误区。

    核心关键词JavaScript 事件循环
    #异步与浏览器#异步编程#事件循环
  2. 0002
    JavaScript异步与 Promise

    怎么用 AbortController 取消 fetch 请求?

    AbortController 怎么取消 fetch 请求?用 signal 把控制器和请求连起来,调用 abort() 后 fetch 以 AbortError 拒绝。附搜索框取消旧请求、超时取消、一个 signal 取消多个请求的写法和常见坑。

    核心关键词AbortController fetch
    #异步与 Promise#异步编程
  3. 0003
    JavaScript异步与 Promise

    async 函数里直接 throw 一个错误,调用方会怎么收到?

    async 函数里同步 throw 的错误不会直接抛给调用方,而是变成返回的 Promise 的拒绝原因。讲清为什么外层 try/catch 接不住、await 之后才接得住,以及它和普通函数返回 Promise、setTimeout 回调里抛错的区别。

    核心关键词async 函数同步错误
    #异步与 Promise#异步编程
  4. 0004
    JavaScript异步与 Promise

    async 函数里 return 一个值,外面拿到的是值还是 Promise?

    async 函数不管 return 什么,调用方拿到的都是一个 Promise。讲清 return 普通值、return 另一个 Promise、return thenable 分别会怎样,为什么返回的 Promise 和 return 的不是同一个,以及怎么把值取出来。

    核心关键词async 函数 return
    #异步与 Promise#异步编程
  5. 0005
    JavaScript异步与 Promise

    forEach 里写 async/await,为什么不会一个一个按顺序等?

    forEach 会同步调用完所有回调,并丢掉 async 回调返回的 Promise,所以既不按顺序等,外面也不知道什么时候全做完。讲清原因,给出 for...of 串行、Promise.all 加 map 并发两种替代写法,以及错误接不住的坑。

    核心关键词forEach async await 问题
    #异步与 Promise#异步编程
  6. 0006
    JavaScript异步与 Promise

    for 循环里逐个 await 请求是串行的吗?怎么改成并发?

    for 循环里每次 await 都要等上一个请求回来才发下一个,是串行,总耗时是所有请求之和。用可运行的计时示例对比串行和 Promise.all 并发,讲清并发的关键是先发起再等待,以及限流、失败处理和什么时候必须串行。

    核心关键词await for 循环串行
    #异步与 Promise#异步编程#并发编程
  7. 0007
    JavaScript异步与 Promise

    为什么说 async/await 是 Promise 的语法糖?能把它改写成 then 链吗?

    async/await 底层还是 Promise:async 函数返回 Promise,await 后面的代码相当于放进 then 回调里执行。用可运行示例把同一段逻辑写成 await 版和 then 链版,讲清错误处理、finally 的对应关系,以及两种写法不完全等价的地方。

    核心关键词async/await vs Promise 链
    #异步与 Promise#异步编程
  8. 0008
    JavaScript异步与 Promise

    async/await 里哪些错误该用 try/catch 接,哪些不该接?

    try/catch 只能接住被 await 的 Promise 拒绝和同步抛错,漏写 await、定时器回调里的错误都接不住。讲清哪些业务错误应该就地处理,哪些程序 bug 应该放给全局兜底,以及 return 和 return await 的区别。

    核心关键词async/await 错误捕获边界
    #异步与 Promise#异步编程
  9. 0009
    JavaScript异步与 Promise

    并发池里任务谁先完成不一定,怎么让结果还按原来的顺序排?

    限制并发的任务池里,先发的任务不一定先完成,直接 push 结果顺序就乱了。讲清按下标写回结果数组的做法、为什么下标要在 await 之前取,以及按完成顺序处理、按原顺序分段输出这两种变体和失败时的处理。

    核心关键词并发池结果顺序
    #异步与 Promise#异步编程#并发编程
  10. 0010
    JavaScript异步与 Promise

    手写一个限制最大并发数的异步任务调度器,怎么实现?

    经典手写题:实现一个 Scheduler,最多同时运行 2 个任务,add 返回 Promise。用一个等待队列加一个运行计数器实现,附 2 3 1 4 输出的完整推演,以及同步抛错、任务失败卡死队列这些常见漏洞。

    核心关键词异步并发池实现
    #异步与 Promise#异步编程#并发编程
  11. 0011
    JavaScript异步与 Promise

    给 fetch 加重试时,怎么保证每次重试带的参数都和第一次一样?

    fetch 重试最常见的坑是参数丢失:Request 对象的请求体只能读一次,第二次发就报 TypeError,options 被拦截器改过也会带错。讲清保存 url 和 options 重发、每次 clone、哪些错误该重试、退避间隔和 POST 幂等问题。

    核心关键词fetch 重试实现
    #异步与 Promise#异步编程
  12. 0012
    JavaScript异步与 Promise

    一个请求既要能被用户取消又要有超时,AbortSignal.any 怎么用?

    AbortSignal.any 接收一组 signal,返回一个新 signal,其中任意一个被取消它就跟着取消。讲清用户取消加超时的组合写法、怎么通过 reason 区分是谁取消的、已取消的 signal 传进去会怎样,以及老环境下的手写降级。

    核心关键词AbortSignal.any
    #异步与 Promise#异步编程
  13. 0013
    JavaScript异步与 Promise

    Promise.all 传一个空数组进去,会一直 pending 吗?

    Promise.all([]) 不会卡住也不会报错,而是返回一个已经 fulfilled、值为空数组的 Promise。讲清它为什么是同步变成 fulfilled、回调却仍然异步执行,以及 race、any、allSettled 遇到空数组时各自的表现和业务里的坑。

    核心关键词Promise.all 空数组
    #异步与 Promise#异步编程
  14. 0014
    JavaScript异步与 Promise

    Promise.all 里一个请求挂了,怎么让其他请求的结果还能用?

    Promise.all 只要有一个请求失败就整体 reject,其他成功的结果全拿不到。讲两种保住结果的写法:给每个 Promise 单独 catch 兜底,或者改用 Promise.allSettled,以及关键接口和可选接口混在一起时该怎么拆。

    核心关键词Promise.all 单个失败保留其他结果
    #异步与 Promise#异步编程
  15. 0015
    JavaScript异步与 Promise

    Promise.all 的数组里混了普通值,会怎么处理?

    Promise.all 数组里放数字、字符串、null 这类普通值不会报错,它们会被 Promise.resolve 包一层,结果数组里原样保留,位置也不变。讲清包装过程、thenable 对象的特殊处理、结果顺序为什么和完成顺序无关,以及传入不可迭代值时的表现。

    核心关键词Promise.all 非 Promise 值
    #异步与 Promise#异步编程
  16. 0016
    JavaScript异步与 Promise

    Promise.all 有一个 reject 了,会立刻失败吗?剩下的任务还会跑吗?

    Promise.all 是快速失败的:第一个 reject 出现时整体立刻拒绝,不等其他任务。但其他任务不会被停掉,它们照样执行完,结果和后续错误都被静默丢弃。附执行顺序演示、用 AbortController 真正停掉剩余请求的写法和常见误区。

    核心关键词Promise.all 快速失败
    #异步与 Promise#异步编程
  17. 0017
    JavaScript异步与 Promise

    Promise.allSettled 返回的数组里,每一项长什么样?

    Promise.allSettled 的结果数组里,成功项是 status 加 value,失败项是 status 加 reason,顺序和传入顺序一致。讲清两种结构、为什么要用 status 而不是 value 判断成败、TypeScript 里怎么收窄类型,以及和 Promise.all 的区别。

    核心关键词Promise.allSettled 结果结构
    #异步与 Promise#异步编程
  18. 0018
    JavaScript异步与 Promise

    已经拿到一个 Promise 了,为什么还用 new Promise 包一层是反模式?

    明明函数已经返回 Promise,还要 new Promise 再包一层,代码多了不说,内层出错时外层 Promise 可能永远 pending。这篇用一段能跑的代码演示错误是怎么丢的,讲清直接 return 原链的改法,以及什么时候才真的需要 new Promise。

    核心关键词new Promise 包裹已有 Promise 反模式
    #异步与 Promise#异步编程
  19. 0019
    JavaScript异步与 Promise

    Promise.any 全部失败时会报什么错?每个失败原因怎么拿?

    Promise.any 只要有一个成功就返回,全部失败时才拒绝,拒绝值是 AggregateError,每个失败原因都在它的 errors 数组里。这篇讲清 errors 的顺序规则、空数组的特殊情况、多节点兜底请求的写法,以及 catch 里怎么区分 AggregateError 和普通错误。

    核心关键词Promise.any AggregateError
    #异步与 Promise#异步编程
  20. 0020
    JavaScript异步与 Promise

    Promise.any 和 Promise.race 都是取最快的,区别在哪?

    Promise.race 取第一个结束的结果,不管成功还是失败;Promise.any 取第一个成功的,失败会被跳过,全部失败才拒绝。这篇用同一组任务对比两者的输出,讲清超时控制和多节点择优两个典型场景该选哪个,以及空数组时两者的不同表现。

    核心关键词Promise.any vs race
    #异步与 Promise#异步编程
  21. 0021
    JavaScript异步与 Promise

    catch 放在 Promise 链中间和放在末尾,结果有什么不一样?

    catch 放在链中间,会把错误吃掉并让链恢复成功,后面的 then 照常执行;放在末尾,前面任何一步出错都会跳过剩下的 then 直接进来。这篇用一段对比代码讲清两种位置的输出差异、catch 的返回值怎么决定后续走向,以及 then 第二个参数和 catch 的区别。

    核心关键词Promise catch 位置差异
    #异步与 Promise#异步编程
  22. 0022
    JavaScript异步与 Promise

    then 回调里 throw 一个错误,后面的链会怎样?

    then 回调里抛出的异常会被 Promise 自动捕获,变成链上的拒绝,后面的成功回调被跳过,直接进入 catch。这篇用代码演示错误沿链传递和恢复的过程,讲清只有同步抛出才会被捕获、setTimeout 里的 throw 为什么接不住,以及外层 try/catch 为什么无效。

    核心关键词Promise 链抛出异常
    #异步与 Promise#异步编程
  23. 0023
    JavaScript异步与 Promise

    new Promise 里传的函数是同步执行还是异步执行?

    new Promise 传入的 executor 是同步执行的,new 的那一刻就会被立即调用;异步的只是 then 回调。通过一段打印顺序题讲清 executor、resolve 和 then 各自在什么时候运行,以及 executor 里写异步代码、同步抛错时会怎样。

    核心关键词Promise executor 同步执行
    #异步与 Promise#异步编程
  24. 0024
    JavaScript异步与 Promise

    在 new Promise 的 executor 里直接 throw,Promise 会变成 rejected 吗?

    executor 里同步 throw 的错误会被 Promise 构造器捕获,Promise 变成 rejected,错误对象就是拒绝原因。讲清三个边界:resolve 之后再 throw 会被忽略,setTimeout 回调里 throw 构造器接不住,没写 catch 会触发未处理拒绝。

    核心关键词Promise executor 抛出错误会拒绝吗
    #异步与 Promise#异步编程
  25. 0025
    JavaScript异步与 Promise

    Promise 的 finally 和 then 回调有什么不一样?

    finally 回调拿不到结果,返回值也会被忽略,上一步的成功值或失败原因会原样传下去;只有在 finally 里抛错或返回 rejected Promise,才会改写结果。用可运行的示例讲清这三点,以及用 finally 关 loading 的正确姿势。

    核心关键词Promise finally 与 then 区别
    #异步与 Promise#异步编程
  26. 0026
    JavaScript异步与 Promise

    then 回调里返回一个 Promise,下一个 then 拿到的是 Promise 还是值?

    then 回调返回一个 Promise 时,下一个 then 拿到的是这个 Promise 最终的值,而不是 Promise 本身。讲清外层 Promise 如何等待并跟随内层的状态、thenable 为什么也会被展开、返回自身为什么报错,以及展开带来的额外微任务。

    核心关键词Promise 嵌套展开
    #异步与 Promise#异步编程
  27. 0027
    JavaScript异步与 Promise

    Promise.race 传一个空数组进去,会返回什么?

    Promise.race 传入空数组,返回的 Promise 永远停在 pending,既不成功也不失败,await 它的代码会一直卡住。对比 Promise.all、allSettled、any 在空数组下的不同结果,讲清原因和业务代码里该怎么防。

    核心关键词Promise.race 空数组
    #异步与 Promise#异步编程
  28. 0028
    JavaScript异步与 Promise

    Promise.resolve 传入一个 thenable 对象时会发生什么?

    Promise.resolve 收到带 then 方法的对象时,不会原样返回它,而是新建一个 Promise,在下一个微任务里调用它的 then 来决定结果。附原样返回的唯一条件、then 行为不规范时的处理和 await 的关系。

    核心关键词Promise.resolve thenable
    #异步与 Promise#异步编程
  29. 0029
    JavaScript异步与 Promise

    多个 Promise 并发执行时,then 回调一定按完成顺序触发吗?

    多个 Promise 同时跑,then 回调基本按谁先兑现谁先执行,而不是按创建顺序。但用 Promise 去 resolve 另一个 Promise 会多等两个微任务,顺序就会反过来。附 Promise.all 结果顺序和真实请求里的处理方式。

    核心关键词Promise then 触发顺序
    #异步与 Promise#异步编程#并发编程
  30. 0030
    JavaScript异步与 Promise

    Promise 的状态只能改变一次,多次调用 resolve 或 reject 会怎样?

    Promise 只认第一次 resolve 或 reject,之后的调用全部静默忽略,也不会报错。但 resolve 不会让函数停下,后面的代码照样执行。附 resolve 一个 Promise 时的锁定状态、超时封装里的应用和手写 Promise 的实现要点。

    核心关键词Promise 状态不可变
    #异步与 Promise#异步编程
  31. 0031
    JavaScript异步与 Promise

    Promise 已经兑现了,then 回调为什么还是异步执行?

    哪怕 Promise 早就兑现,then 回调也要等当前同步代码跑完才执行。这篇讲清它被放进了微任务队列、为什么规范要这样设计(避免时同步时异步的回调),以及和 setTimeout、await 的执行顺序关系。

    核心关键词then 回调异步执行
    #异步与 Promise#异步编程
  32. 0032
    JavaScript异步与 Promise

    怎么用 Promise.race 给异步操作加超时?超时后原来的 Promise 还会跑吗?

    用 Promise.race 让原任务和一个定时拒绝的 Promise 赛跑,就能实现超时。但 race 只是不再等结果,原任务照样执行完。附清理定时器的完整写法、用 AbortController 真正取消请求的方式和常见追问。

    核心关键词Promise.race 超时
    #异步与 Promise#异步编程
  33. 0033
    JavaScript异步与 Promise

    什么时候会触发 unhandledrejection?怎么避免未处理的 Promise 拒绝?

    Promise 被拒绝后,如果到本轮微任务结束都没有任何处理函数,浏览器就会触发 unhandledrejection。这篇讲清几种最常见的漏处理写法、catch 挂错位置的坑、Node.js 里的默认行为,以及怎样用它做全局错误上报。

    核心关键词unhandledrejection 事件
    #异步与 Promise#异步编程
  34. 0034
    JavaScript异步与 Promise

    递归处理层级不确定的异步任务,怎么避免爆栈和 Promise 链越来越长?

    异步递归有两个坑:await 之前就递归会同步爆栈,每层都 return 下一层的 Promise 会让内存一直涨。这篇讲清两种问题的来源,为什么尾递归在 JavaScript 里靠不住,以及用 while 循环加队列改写的标准做法。

    核心关键词递归 Promise 链 栈溢出 避免
    #异步与 Promise#异步编程
  35. 0035
    JavaScript异步与 Promise

    一组返回 Promise 的函数,怎么用 reduce 串行执行并把上一个结果传给下一个?

    用 reduce 从 Promise.resolve(初始值) 开始,每一步 prev.then(fn),就能让函数依次执行并拿到上一步的结果。附 async/await 写法、把 fn() 写成立即调用导致变并发的经典错误、错误处理和收集全部结果的方法。

    核心关键词reduce 串行 Promise
    #异步与 Promise#异步编程
  36. 0036
    JavaScript数组与集合

    为什么空数组调用 every 返回 true,some 却返回 false?

    every 问的是有没有反例,空数组没有反例所以是 true;some 问的是有没有一个满足的,空数组一个都没有所以是 false。这篇讲清背后的逻辑、两者的短路行为、空购物车也能提交这类业务 bug,以及回调写成 async 时的坑。

    核心关键词空数组 every some 返回值
    #数组与集合#异步编程
  37. 0037
    JavaScript数组与集合

    Array.from 能转换类数组,为什么数组展开有时却会报错?

    Array.from 认两种输入:可迭代对象和类数组(有 length 和数字下标),数组展开只认可迭代对象,所以只有 length 的对象一展开就报 TypeError。附两者都满足时谁优先、缺失下标变成 undefined、第二个参数 mapFn 的用法。

    核心关键词Array.from 可迭代对象与类数组参数
    #数组与集合#异步编程
  38. 0038
    JavaScript数组与集合

    for...of 和 forEach 怎么跳过当前项、提前结束,异步时有什么区别?

    forEach 里 return 为什么停不下来?对比 for...of 和 forEach 在跳过当前项、提前结束、处理 async 回调上的区别,以及查找用 some、find,顺序等待用 for...of,并发用 Promise.all 的选择方法。

    核心关键词for...of 与 forEach break continue 区别
    #数组与集合#异步编程#并发编程
  39. 0039
    JavaScript数据处理

    怎么把 Blob 转成 ArrayBuffer,有哪些 API 可以用?

    现代浏览器直接用 await blob.arrayBuffer(),老环境用 FileReader.readAsArrayBuffer 配合 load、error 事件。讲清两种写法、怎样把 FileReader 封装成 Promise、大文件为什么要用 stream 或分片读取,以及转文本的更简单方法。

    核心关键词Blob 转 ArrayBuffer 的 API 方法
    #数据处理#异步编程
  40. 0040
    JavaScript函数与作用域

    异步生成器和普通生成器有什么区别?什么时候会用到它?

    异步生成器用 async function* 声明,里面既能 await 又能 yield,next() 返回的是 Promise,要用 for await...of 来消费。结合分页拉取数据的例子讲清它和普通生成器的区别、break 时 finally 如何清理,以及它为什么不会自动并发。

    核心关键词异步生成器与普通生成器区别
    #函数与作用域#异步编程
  41. 0041
    JavaScript函数与作用域

    for 循环里用 var,setTimeout 为什么打印出来全是同一个数?

    经典面试题:for 循环里用 var 声明 i,setTimeout 打印出来全是 3。原因是 var 整个函数只有一个 i,回调执行时循环早就跑完了。附 let、IIFE、setTimeout 第三个参数三种修法和常见追问。

    核心关键词var 循环变量闭包异步回调 修复
    #函数与作用域#异步编程
  42. 0042
    JavaScript函数与作用域

    所有函数都有 prototype 吗?箭头函数为什么没有?

    不是所有函数都有 prototype。普通函数和 class 有,箭头函数、async 函数、对象简写方法、bind 返回的函数没有;生成器有 prototype 却不能 new。讲清 prototype 和能否 new 的关系以及常见误判。

    核心关键词函数 prototype 属性 箭头函数为何没有
    #函数与作用域#异步编程
  43. 0043
    JavaScript模块与语言机制

    模块里写了顶层 await,为什么导入它的父模块要一直等?能避免吗?

    顶层 await 为什么会卡住导入它的父模块?因为 ESM 要保证父模块执行时依赖已经执行完,异步依赖没结束,父模块就不能跑。讲清阻塞的范围只限依赖链上的祖先模块,以及改成导出 Promise、动态 import() 两种规避方式。

    核心关键词顶层 await 阻塞父模块与规避
    #模块与语言机制#异步编程
  44. 0044
    JavaScript模块与语言机制

    循环依赖里,一个模块在顶层读另一方导出的 let 变量,会发生什么?

    ESM 循环依赖中,在顶层读取对方还没初始化的 let 导出,会抛 ReferenceError: Cannot access before initialization。讲清暂时性死区为什么延伸到导入方,和 var、函数声明的差别,以及把读取挪进函数、拆出第三个模块的修法。

    核心关键词ESM 循环依赖 let 暂时性死区
    #模块与语言机制#异步编程
  45. 0045
    JavaScript模块与语言机制

    动态 import() 返回的是什么?为什么它是异步的?

    动态 import() 返回一个 Promise,resolve 后得到模块命名空间对象。它必须异步因为模块可能需要网络加载和执行。附 await 写法、错误处理、缓存机制和与静态 import 的本质区别。

    核心关键词动态 import() 返回 Promise 原因
    #模块与语言机制#异步编程
  46. 0046
    JavaScript模块与语言机制

    浏览器里用 script type="module" 加载模块要注意什么?

    浏览器通过 script type="module" 加载 ES 模块,默认 defer 执行,自动严格模式,跨域需要 CORS。附模块脚本和普通脚本的行为差异、nomodule 降级、常见踩坑场景。

    核心关键词浏览器 script module 入口加载
    #模块与语言机制#异步编程
  47. 0047
    JavaScript模块与语言机制

    顶层 await 会让依赖这个模块的代码等多久?

    模块顶层 await 会暂停本模块后续求值,并让依赖它的模块等待结果;依赖图中无关的分支仍可继续执行。配置加载等初始化场景适合它,但等待链过长会延迟应用启动,拒绝结果也会沿依赖关系传播。

    核心关键词顶层 await 对模块执行的影响
    #模块与语言机制#异步编程
  48. 0048
    JavaScript值与类型

    void 运算符有什么用?为什么老代码里到处是 void 0?

    void 会先求值右侧表达式,再把整个表达式的结果固定为 undefined。void 0 曾被用来取得可靠的 undefined,如今也常用来显式丢弃回调返回值或标记不等待的 Promise;它不会吞掉 Promise 的未处理拒绝。

    核心关键词void 运算符 undefined
    #值与类型#异步编程
上一页
1
下一页
前端进阶之旅本地 Markdown 维护 · 服务端分页 · 完整内容对用户与搜索引擎一致