1.promise是什么,有什么用?
Promise来源于ES6,是一个构造函数,可以构造promise对象,用于实现异步操作。
2.promise的状态特点
promise异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败),状态可从 pending 变为 fulfilled 和从 pending 变为 rejected。只要处于 fulfilled 和 rejected ,状态就不会再变了(已定型)。
3.promise基本用法:
小栗子:
promise构造函数接收两个函数作为参数,分别是resolve和reject。
异步操作成功,resolve用来触发then方法里面的代码,此时promise对象状态从pending变为fulfilled;
异步操作失败,reject用来触发catch方法中的代码,此时promise对象状态从pending变为rejected;
4.promise的常用方法(暂时说明then、catch、finally、all方法)
实例对象promise,原型上有方法then(promise执行resolve函数,状态为fulfilled时调用)、catch(promise执行reject函数,状态为rejected时调用)、finally(不管啥状态都调用)
then、catch、finally小栗子:
promise.all(Array/String),用于将多个 Promise 实例,包装成一个新的 Promise 实例. 它的状态由其参数中的promise中的状态决定:
1.当传入的全部实例中的状态都fulfilled时,其生成的实例的状态会fulfilled,且传入promise实例的结果组成的数组,会作为当前新实例的回调参数返回。小栗子:
2.当参数中实例中有一个被rejected,promise的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
3.若传入的的参数中有不是promise实例的,会调用Prmoise.resolve()将其转换成Promise。