promise就是一个构造函数,用来解决异步回调地狱的问题。 让异步代码真正实现像同步代码一样从上到下执行。
注意:promise只能控制异步代码处理结果的顺序,而不能控制异步代码执行的顺序(因为异步代码是无序的)。说人话就是promise实例对象会把所有的异步代码封装到函数内部,这些代码的返回结果只有三种,进行中pending,已成功fulfilled,已失败rejected。promise可以通过调用then方法来获取结果。
如果还是听不懂没关系,我再打个比方,就好比一群人去办身份证,只有三种结果,进行中,已成功,已失败。promise这个人就负责把这些结果统计好并且封装到一起,人们想得到这些结果就需要等待几天,几天后人来了,他问promise我的身份证办好了吗,promise问你叫什么名字,再告诉他结果。(也就是then方法获取结果)
第二部分
promise的三种方法 catch方法 catch用于捕捉promise对象的错误信息。跟then方法一样,then是获取成功信息,catch是捕捉错误信息。想要捕捉错误信息直接在后面加上.catch(err)
all方法 用于将多个promise对象放到数组中合并成一个promise,所有异步执行完毕才会执行then方法
race方法 用于将多个promise对象放到数组中合并成一个promise,任何一个异步执行完毕就会执行then方法
all方法案例 (nodejs)
说了这么多,但其实这种方法并没有实际解决回调地狱层层嵌套的问题。如果没有all方法和race方法,就是想要一个个获得异步代码的结果,那么then就要一直return每个promise的值出来,本质还是回调地狱,层层嵌套。