1. 这是个什么东西--------console.dir(Promise) 打印出来
--------Promise是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。因此Promise new出来的对象肯定就有then、catch方法
--------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中就可以接收到数据
优势:--------Promise的优势在于,可以在then方法中继续写Promise对象并返回,然后继续调用then来进行回调操作。
3. reject的用法
then方法可以接受两个参数,第一个对应resolve的回调,第二个对应reject的回调。所以我们能够分别拿到他们传过来的数据
4.catch的用法
和then的第二个参数一样,用来指定reject的回调--------即便是有错误的代码也不会报错,与try/catch语句有相同的功能。
5.all方法的用法
Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调
all会把所有异步操作的结果放进一个数组中传给then----可以并行执行多个异步操作,并且在一个回调中处理所有的返回数据