1. 这是个什么东西--------console.dir(Promise) 打印出来javascript
--------Promise是一个构造函数,本身身上有all、reject、resolve这几个方法,原型上有then、catch等方法。所以Promise new出来的对象确定就有then、catch方法java
--------Promise的构造函数接收一个参数,是函数,而且传入两个参数:resolve,reject,分别表示异步操做执行成功后的回调函数和异步操做执行失败后的回调函数。数组
2.用起来是怎么样(resolve做用)异步
function a(){
var b= new Promise(function(resolve, reject){
//异步操做
setTimeout(function(){
console.log('完成');
resolve('输出的东西');
}, 2000);
});
return b;
}
a().then(function(data){
console.log(data);
//后面能够用传过来的数据作些其余操做
//在a()的返回上直接调用then方法,then接收一个参数,是函数,而且会拿到咱们在a中调用resolve时传的的参数。运行这段代码,会在2秒后输出“完成”,紧接着输出“输出的东西”。
});
注意点:-----用Promise的时候通常是包在一个函数中,在须要的时候去运行这个函数---再用异步的方法函数
------在then方法中,你也能够直接return数据而不是Promise对象,在后面的then中就能够接收到数据spa
优点:--------Promise的优点在于,能够在then方法中继续写Promise对象并返回,而后继续调用then来进行回调操做。对象
3. reject的用法blog
then方法能够接受两个参数,第一个对应resolve的回调,第二个对应reject的回调。因此咱们可以分别拿到他们传过来的数据ip
4.catch的用法原型
和then的第二个参数同样,用来指定reject的回调--------即使是有错误的代码也不会报错,与try/catch语句有相同的功能。
5.all方法的用法
Promise的all方法提供了并行执行异步操做的能力,而且在全部异步操做执行完后才执行回调
all会把全部异步操做的结果放进一个数组中传给then----能够并行执行多个异步操做,而且在一个回调中处理全部的返回数据