首先了解一下什么是Promise:
Promise简单来说就是个替代回调函数执行的东东,作为异步操作的处理方法之一。
(回调函数是指在作为对象传入主函数,在在主函数处理完之后执行的函数)
那么为什么要用这个呢?
日常经常有那种执行完一个函数继续执行下一个函数的需求,例如最简单的每秒输出数字1.2.3....,这样会形成嵌套,就像套娃娃一样,一个大的里面有一个小的,处理起来很麻烦。
举个小栗子:

所以我们要进行处理操作,一般promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态);
常见写法为:
let p = new Promise(resolve, reject){}.then();
例子:
原来的写法

按照Promise的写法

Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数.
按照标准来讲,其实resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected,promise的常用用法.
注意:在then方法中的function 调用的next方法,一定要用return ,否则不会通过resolve把数据往下传递( 通俗点讲就是下一个异步操作,接收不到上一步的结果 ).
then能接受两个参数,由reject传数据给第二函数;

和then不同 catch 是用于接受错误信息的(reject)(推荐用这种)

resolve所给的值由then接受,reject的值由catch接受。
Promise.all 与 Promise.race
这两者有何不同呢,一个是在全部异步加载完之后显示全部,一个是执行完最快的那个立马显示
例如:

浏览器上显示:

race:

浏览器上显示:

网友评论