原帖提了一个面试题,用来考察对 JS 异步控制的熟悉程度。
个人在学习 JS 时特意看了一遍 Promises/A+ 并尝试实现过,感觉这类东西跟算法等计算机基础课一样,平时工作中肯定用不到,99% 的概率不需要你手搓一个 Promise 或事件循环之类的东西,但仅读过文档说明,跟真的参考规范并尝试实现过,理解程度肯定是不一样的。
又或者以 Java 举例,仅了解 Java 语法和标准库,和深入探索过 JVM 的各种机制与细节,在线上排查 OOM 问题的时候,思考的层次和维度就会不同。
然而人生苦短,学海无涯,没人且没必要事无巨细地深入到这种程度,需要将有限的精力投入到更重要的地方去,所以才有此疑惑:
对一个软件工程师(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?
或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?