• pomise的简单用法


    1、then的基本简单用法,当异步获取完数据后就会自动执行then的方法

        function runAsync1(){
            var p = new Promise(function(resolve, reject){
                //做一些异步操作
                setTimeout(function(){
                    console.log('执行完成');
                    resolve('随便什么数据');
                }, 3000);
            });
            return p;
        }
    
      renAsync1().then(function(data){
        console.log(data);//随便什么数据
      })
    

    2、then的链式基本用法,一个一个触发

        runAsync1().then(function(data){
            console.log(data);//随便什么数据1
            return runAsync2();
        }).then(function(data){
            console.log(data);//随便什么数据2
        })
    

    3、提供两种数据传递方式resolve(),和reject()(注意两者一次只能触发其一)

    function getNumber(){
        var p = new Promise(function(resolve, reject){
            //做一些异步操作
            setTimeout(function(){
                var num = Math.ceil(Math.random()*10); //生成1-10的随机数
                if(num<=5){
                    resolve(num);
                }
                else{
                    reject('数字太大了');
                }
            }, 2000);
        });
        return p;            
    }
    
    getNumber()
    .then(
        function(data){
            console.log('resolved');
            console.log(data);
        }, 
        function(reason, data){
            console.log('rejected');
            console.log(reason);
        }
    );
    

    4、当发生错误时触发的catch

    getNumber()
    .then(function(data){
        console.log('resolved');
        console.log(data);
        console.log(somedata); //此处的somedata未定义
    })
    .catch(function(reason){
        console.log('rejected');
        console.log(reason);
    });
    

    5、全部同时执行的all(全部执行完成才输出数据,且数据也是数组格式)

    Promise
    .all([runAsync1(), runAsync2(), runAsync3()])
    .then(function(results){
        console.log(results);
    });
    

    6、谁快先执行谁的race

    Promise
    .race([runAsync1(), runAsync2(), runAsync3()])
    .then(function(results){
        console.log(results);
    });
    
  • 相关阅读:
    讲讲HashCode的作用
    自定义一个类加载器
    从为什么String=String谈到StringBuilder和StringBuffer
    System.load(String filename)和System.loadLibrary(String libname)的区别
    自己实现一个Native方法的调用
    Java对象表示方式1:序列化、反序列化和transient关键字的作用
    Java对象表示方式2:XStream实现对对象的XML化
    static关键字作用
    final的作用
    多态
  • 原文地址:https://www.cnblogs.com/huangqiming/p/6844546.html
Copyright © 2020-2023  润新知