ES6 Promise小笔记

来源:互联网 发布:mac .m2文件夹 看不见 编辑:程序博客网 时间:2024/05/21 00:49

ES6 Promise:

Promise是一个构造函数,身上有all、reject、resolve这几个方法,原型上有then、catch方法.

all:并行执行异步操作,并且在所有异步操作执行完后才执行回调;

resolve:异步操作执行成功后的回调函数

reject:异步操作执行失败后的回调函数,把Promise的状态置为rejected,我们在then中能捕捉到,然后执行“失败”情况的回调;


then:用于多层回调,(可传两个函数,第一个是成功的回调,第二个是失败的回调函数

catch:在执行resolve的回调(也就是hen中的第一个参数)时,如果抛出异常了(代码出错了),那么并不会报错卡死js,而是会进到这个catch方法中


用法:

function resolveMethods1(){    var p = new Promise(function(resolve, reject){        //异步操作        setTimeout(function(){            if (1 === 2) {                resolve('异步1完成后的回调');            } else {                reject('异步1失败后的回调');            }                                }, 1000);    });    return p;            }function resolveMethods2(){    var p = new Promise(function(resolve, reject){        //做一些异步操作        setTimeout(function(){            if (1 === 1) {                resolve('异步2完成后的回调');            } else {                reject('异步2失败后的回调');            }        }, 1000);    });    return p;            }调用方式一:resolveMethods1().then(function(data){    console.log(data);    return resolveMethods1();}, function (data) {    console.log(data);    return resolveMethods2();}).then(function(data){    console.log(data);}, function (data) {     console.log(data);});
调用方式二:
resolveMethods1().then(function (data) {    console.log(data);    return resolveMethods1();}).catch(function (data) {    console.log(data);    return resolveMethods2();}).then(function (data) {    console.log(data);}).catch(function (data) {    console.log(data);});


结果如下(方式一和方式二的结果是一样的):



 
原创粉丝点击