自己整理了一张图,ProcessOn 做的,可以参照着这张图去阅读学习 context 的源码。
简单的总结就是,万物( Context )基于 emptyCtx,可以认为一个 ctx 为一个节点,然后根据需求,配置成 valueCtx、cancelCtx 或 timerCtx,最终形成一条子节点包含母节点的链表。
源码内容不多,可以慢慢消化。
但凡学习了新的东西,要思考,我学习的这个东西,能用在什么地方并用自己的语言去表述:
比如点鞭炮,一条引线可以同时点燃左右两串鞭炮,引线又是由一节节火药连成的(链表),突然发现右边鞭炮附近有小孩(在程序中就是遇到了error),要及时停止右边的鞭炮继续燃烧,避免造成不可挽救的情况(在系统中就是资源损耗),这个时候肯定还在继续燃烧对不对(必须对),那其中一节就及时抛出警告,告诉后面的火药别烧下去了(抛出 error ),告诉前面的领导咱们不能再烧了,最后右边的鞭炮就点不起来,也没造成人身伤害。
上图:
有疑问加站长微信联系(非本文作者)