• ES6之promise基础内容


    promise是es6中增加的新内容

    它就是一个对象,主要用来处理异步数据的

    为了我们的代码更加具有可读性和可维护性,我们需要将数据请求与数据处理明确的区分开来,这时候,就显示出了promise的重要。

    在promise中,有三种状态

                    ——》resolve(完成)

    pending (等待,处理中) ———

                    ——》rejected(失败,拒绝)

    状态只能从pending 到 resolve 或者 pending 到rejected 并且不可逆

    用法:

    var pro = new Promise(function(resolve,reject){

      resolve("成功");     // 成功,就传递数据 “成功”出去

      reject("失败");  // 失败,就传递数据“失败”出去

    })

    pro.then(function(val){},function(err){})

    第一个是成功的回调函数,val接收resolve()中的数据

    第二个是失败的回调函数,err接收reject()中的数据

    then()方法执行完成之后又返回的是一个promise对象,所以可以继续在后面接 .then()方法,并且可以使用链式结构的写法。比如:

    pro.then(function(val){},function(err){}).then(function(val){},function(err){})

    catch   捕获的用法

    用来制定reject的回调,并且发生错误可以继续执行代码不使代码停在错误的地方。

    用法如下:

    var p = new Promise(function(resolve,reject){
        resolve("success");
    })
    p.then(function(data){
        console.log(data);  //success
        throw "发生错误了"
    }).catch(function(err){
        console.log(err);  //发生错误了
    })

    all 的用法

    只有当所有的promise全部成功才能走成功,否则失败

    用法如下:

            var p1 = Promise.resolve(10);
            var p2 = Promise.resolve(20);
            var p3 = Promise.reject(30);
    
            Promise.all([p1,p2,p3,true,false]).then(function(data){
                console.log(data);  
            },function(err){
                console.log(err);  //30
            })

    如果没有错误:

            var p1 = Promise.resolve(10);
            var p2 = Promise.resolve(20);
    
            Promise.all([p1,p2,true,false]).then(function(data){
                console.log(data); //[10,20,true,false]
            },function(err){
                console.log(err);
            })

    race 用法

    race也是返回一个promise对象

    作用是获取最先得到的结果

            var p1 = new Promise(function(resolve,reject){
                setTimeout(resolve,100,"first");
            })
            var p2 = new Promise(function(resolve,reject){
                setTimeout(resolve,50,"second");
            })
    
    
            Promise.race([p1,p2]).then(function(val){ 
                console.log(val)  //second
            })    

    成功的promise里面可以传递一个成功的promise对象

            var p1 = Promise.resolve(10);
    
            var p2 = Promise.resolve(p1); 
    
            p2.then(function(data){
                console.log(data); // 10
            })
  • 相关阅读:
    待续中的图灵机与有限状态机
    barabasilab-networkScience学习笔记6-evolving networks
    pythonyCool-moviepy
    各种方法合成地震图的对应单位
    matla互相关协方差的计算和理解
    matlab运行中出现“Caught "std::exception" Exception message is: Message Catalog MATLAB:builtins was not loaded from the file."
    对拉普拉斯平滑 的认识
    关于小波变换
    随笔学习
    关于滤波频段的选取(近震波形)
  • 原文地址:https://www.cnblogs.com/ddjps/p/10512902.html
Copyright © 2020-2023  润新知