zoukankan      html  css  js  c++  java
  • 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);
    });
    
  • 相关阅读:
    IIC/I2C从地址之7位,8位和10位详解
    ARM uxtw
    ARM(CM3)的汇编指令
    WZR/XZR ARM
    LDR r, label 和 LDR r, =label的区别
    Distinguishing between 32-bit and 64-bit A64 instructions
    03JavaScript程序设计修炼之道_2019-06-18_20-39-14_事件onload&onmouseover&out
    02-CSS基础与进阶-day6_2018-09-05-20-18-21
    02-CSS基础与进阶-day5_2018-09-03-22-10-39
    02-CSS基础与进阶-day5_2018-09-03-21-41-57
  • 原文地址:https://www.cnblogs.com/huangqiming/p/6844546.html
Copyright © 2011-2022 走看看