zoukankan      html  css  js  c++  java
  • Promise对象和async函数

    Promise对象

        //1开始
    function fna(){
        console.log('1开始');
        var p = new Promise(function(resolve, reject){        //做一些异步操作
            setTimeout(function(){
                console.log('1完毕!');
                resolve('进行2');//完成(Rejected)
            }, 6000);
            // setTimeout(function(){
            //     console.log('1失败!');
            //     reject('1没有完成');//失败
            // }, 1000);
        });
        return p;
    }
     
    //2开始
    function fnb(data){
        console.log('2开始' + data);
        var p = new Promise(function(resolve, reject){        //做一些异步操作
            setTimeout(function(){
                console.log('2完毕!');
                resolve('进行3');
            }, 2000);
        });
        return p;
    }
     //3开始
    function fnc(data){
        console.log('3开始' + data);
        var p = new Promise(function(resolve, reject){        //做一些异步操作
            setTimeout(function(){
                console.log('3完毕!');
                resolve('123都完成');
            }, 2000);
        });
        return p;
    }
    
    fna()
    .then(function(data){ //成功的
    
        return fnb(data);
    })
    .catch(function(data){ //失败的
        console.log(data );
    })
    .then(function(data){
        return fnc(data);
    })
    .then(function(data){
        //throw new Error('发现错误!');//捕捉错误
        console.log(data);
    });

    结果:

    .all()方法

    function cutUp(){
        console.log('1开始');
        var p = new Promise(function(resolve, reject){        //做一些异步操作
            setTimeout(function(){
                console.log('1完毕!');
                resolve('准备好1');
            }, 1000);
        });
        return p;
    }
     
    
    function boil(){
        console.log('2开始');
        var p = new Promise(function(resolve, reject){        //做一些异步操作
            setTimeout(function(){
                console.log('2完毕!');
                resolve('准备好2');
            }, 6000);
        });
        return p;
    }
     
    Promise
    .all([cutUp(), boil()])//all 方法在所有异步操作执行完后才执行下面函数
    .then(function(results){
        console.log("12准备完毕:");
        console.log(results);
    });

    结果:

    async函数

    async function asyncValue(value) { //函数前面的async关键字,表明该函数将返回一个Promise对象
        console.log('1');
        //当遇到await关键字等待 await后的函数执行完成才会继续执行
      await timeout(6000).then(function(data){
         console.log(data);
    }).catch(function(data){
         console.log(data);
    })
    
      console.log('完毕');
      return value;
    }
    asyncValue();//调用
    function timeout(ms) {
      return new Promise((resolve) => {
        setTimeout(()=>{
             resolve('干净的碗筷');
        },ms);
      });
    }

    结果:

  • 相关阅读:
    SpringMvc
    Spring-Aop
    Spring-IOC
    Spring模块划分
    队列
    稀疏数组
    数据结构
    Nginx配置实例
    Nginx常用命令
    视频断点播放:h5+jquery
  • 原文地址:https://www.cnblogs.com/aSnow/p/9373369.html
Copyright © 2011-2022 走看看