本文解析“函数颜色”理论:函数分为同步(蓝)与异步(红),红函数可调用蓝函数,蓝函数不能调用红函数,且红色具有传染性。Promise与async/await只是语法糖,未根治问题。真正无颜色问题的是Go、Lua、Ruby等多调用栈语言。异步实现分三种模型:操作系统线程、用户态线程和事件循环,各有优劣,无绝对优雅方案。
文章用“函数颜色”比喻异步问题:红色为异步函数,蓝色为同步函数。同步函数无法调用异步函数,红色具有传染性,导致回调地狱。Promise、async/await 只是语法糖,未根治颜色问题。Go、Lua、Ruby 靠多线程或协程避免此问题。作者比较了操作系统线程、用户态线程和事件循环三种异步模型,指出没有绝对优雅的方案,各有取舍。
完成下面两步后,将自动完成登录并继续当前操作。