callback什么意思|异步结束后自动触发的执行函数

callback什么意思|异步结束后自动触发的执行函数

帮同专业学弟调试前端表单代码时被忽然发问callback什么意思,瞬间卡在原地,平日里总自诩自学吃透基础语法,临到被人细问核心释义却讲不出落地的解释,碍于脸面只能含糊搪塞几句笼统概念,等人走后才蹲在工位对着代码文档逐行核对,心里一边愧疚自身学艺不精,一边又放不下之前随口吹嘘的功底,别扭的情绪缠在细碎的代码参数里。

起初只把它等同于return返回语句。

上次落地用户信息提交的小型项目,整段校验逻辑写完后,习惯性在代码末尾用return传回校验的布尔结果,本地反复点击提交按钮,明明控制台打印出字段格式错误的提醒,页面依旧能够跳过限制直接完成数据提交,连着三个小时反复删减冗余代码,先后试过新建全局变量存储校验状态、拆分校验函数单独调用两种方案,每次改动后刷新页面测试,异常的提交问题始终得不到改善,桌上的草稿纸上密密麻麻写满参数打印记录,同组的实习生偶然路过瞟了一眼代码结构,随口点明异步场景不能依靠直接返回值控制流程,那个瞬间才恍然发现从一开始就曲解了词汇含义,还执拗的归结为浏览器缓存造成的页面异常,白白浪费掉大半的工作时长。

再在各类技术论坛搜罗零散的代码示例,把不同博主分享的demo片段复制粘贴在本地工程试运行,那时候分不清同步代码和异步请求里的使用边界,不管是定时器还是接口请求,一律把后续处理代码堆在主函数尾部。

慢慢拆分两次实操案例才理清基础逻辑,前端向后端发起网络请求的过程存在网络延迟,主线程代码的执行速度远快于接口数据的返回速度,请求发出之后主线程会继续向下运行,没办法原地等待后端传回数据,callback就是提前预埋好的处理方法,等到接口成功接收响应数据,程序会自动调用预埋的这个函数,数据赋值、页面渲染等后续操作全部安置在回调内部,之前把赋值代码写在请求外侧频繁拿到空数据,根源就在违背了异步的运行逻辑。

其实私下熬夜整理了满满一页手写笔记,把不同场景下的使用规范逐条标注清楚,可再碰见学弟请教相关内容,下意识绕开这个词汇,不肯直面早先随口说错的释义,明明已经补齐知识短板,虚荣心捆着身段不愿低头纠错,明明心怀教人解惑的念头,却被无谓的体面困住脚步。

后续接触Node.js本地文件读写开发,再度高频遇见callback写法,磁盘读取本地文件会占用系统IO资源,同步写法会直接阻塞整个程序进程,项目上线规范明确禁止主线程停滞卡顿,只能依托回调机制,系统完成磁盘读取操作的那一刻,自动启动回调里的文本解析代码,经过这一轮落地实操,彻底打破早先把回调和返回值划等号的片面认知,跳出只局限网页前端的狭隘理解。

没有深挖回调衍生的回调地狱、Promise替代方案等进阶内容,满足日常小型业务项目的开发需求便停下深入钻研,本身没有深耕底层源码的规划,浅学够用就不再耗费多余精力。

当晚收拾杂乱的工位桌面,随手把记满callback用法的皱巴巴草稿纸揉成一团丢进桌角垃圾桶。

了解更多百科知识请访问 百科