过去一年里我把node 6升级到 8 (开发环境下甚至鼓励大家用最新的node 10),一个主要目的就是为了解决callback hell的问题.
回调地狱的问题我不是第一次碰到,在做iOS开发时候,使用AFN就有这个“Pyramid of doom”的问题,当时的解决办法,也是后来用swift要求大家尽量用guard,说白了就是early return 但这个方法对nodejs的回调地狱不适用(用命名函数可以部分解决)
刚开始接触node,对promise还不熟悉,为了解决callback hell 首先引入的是 async这个模块 但是用async总感觉不是很自然, boilerplate code也不少。另,没有用其他的库,比如thenjs原因很简单:<1> 它的star数量和async不能比,这是我选开源库一个最重要参考 <2>知道以后肯定会用promise,不想再引入一个“似是而非”的then
promise chain是在熟悉了node之后很自然会引入的第二个解决方案,关于promise chain这篇文章 We have a problem with promises 一定要读透。
MDN对promise的讲解也很到位、全面。如果还觉得不够,那就看看javascript.info的几篇文章promise async/await, rethrow