知识卡片
回调解耦时间
内容
同步请求会让客户端等待响应期间假死;更好方式是发异步请求并传入回调,API 可立即返回、客户端不被阻塞,结果到达时再调用回调处理。回调本身不产生非阻塞——非阻塞来自被调用 API 的异步契约,回调只是把后续逻辑传给异步 API 的机制。发散:异步设计核心不是语法,而是把时间不确定性隔离在结果到达时才执行的函数里。
参考来源
- 位置:《JavaScript语言精粹(修订版)》第4章《函数 Functions》"回调"一节
- 结论依据:原文对比同步请求(会阻塞客户端)和异步请求("异步函数立即返回,这样客户端就不会被阻塞",并传入一个响应到达时被调用的回调函数),说明非阻塞是异步函数本身的性质,回调只是接收结果的机制,因此把卡片结论从"回调本身解耦阻塞"收紧为"异步API可立即返回、回调只是传递后续处理的机制"。
- 原始内容:更好的方式是发起异步请求,提供一个当服务器的响应到达时随即触发的回调函数。异步函数立即返回,这样客户端就不会被阻塞……我们传递一个函数作为参数给send_request_asynchronously函数,一旦接收到响应,它就会被调用。