在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么推荐使用它?
围绕“在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 async pipe 内部自动调用 subscribe 并在组件销毁时取消。
Angular · 异步编程面试题第 1 页,显示第 1–12 题,共找到 12 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“在 Angular 模板中使用 async pipe 时,它如何自动处理 Observable 的订阅与取消?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 async pipe 内部自动调用 subscribe 并在组件销毁时取消。
本题对比模板驱动表单与模型驱动表单在数据绑定(双向绑定 vs 显式响应式绑定)、验证(模板内置 vs 代码函数)和可测试性(异步集成 vs 同步单元)上的关键差异,并给出选择场景与边界。
围绕“在 Angular 表单或 HTTP 调用中,为何通常使用 Observable 而非 Promise?其核心优势体”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须强调 Observable 支持多值推送与取消订阅能力。
围绕“Angular 路由配置中的 data 属性用于存放什么类型的信息?它与 resolve 服务提供的数据有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 data 用于静态元数据,resolver 用于异步加载业务数据。
围绕“CanActivate 路由守卫如何决定用户是否可以进入某个路由?它返回的布尔值或 Observable 代表什么含”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明返回 true 表示允许进入,返回 false 表示阻止,返回 Observable 表示异步决策。
围绕“computed 里能否包含异步逻辑?如果不能,应如何设计以支持异步数据的响应式计算”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须明确 computed 不能包含异步操作,必须改用 resource + signal 依赖方式实现异步计算。
围绕“effect 里等待异步操作完成后再执行后续逻辑,应如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明需使用 await 且确保 effect 内部逻辑是异步的,否则无法等待,不能依赖 signal 变化顺序。
围绕“effect 为何应避免用于简单状态更新?有何替代方案”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明应使用 signal 更新而非 effect,effect 仅用于副作用,如日志、通知、异步操作。
围绕“effect 如何与 RxJS Observable 集成?如何避免多次订阅”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明应使用 takeUntil 从 destroy$ 消费,或使用 async pipe 间接绑定,不能直接订阅而不清理。
围绕“resource 用于加载异步数据时,如何处理请求失败或网络中断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 resource 支持异常捕获并返回错误状态,可通过 error 属性判断,不依赖外部 try/catch。
围绕“resource 为何比 effect + async pipe 组合更高效?关键性能差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 resource 无需手动取消订阅、自动处理重复请求,并在依赖不变时复用结果,减少内存开销。
围绕“多个 resource 同时发起请求时,它们是否并行执行?如何控制并发数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出默认并行执行,若需串行需手动通过 await or Promise.all 序列化调用,resource 本身不提供控制。