zoukankan      html  css  js  c++  java
  • ES6中对Promise解析

    在JavaScript中,所有代码都是单线程执行的。

    1.测试浏览器是否支持Promise

            'use strict';
            new Promise(function(){});
            console.log('支持Promise!');
    2.
        <!-- Axios是一个基于promise的HTTP库,可以用在浏览器
        和node.js中 -->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.0/axios.min.js">
        </script>
        <script>
            let username;
            const usersPromise=axios.get('https://api.github.com/users')
            // 监听事件
            usersPromise.then(reponse=>{
                // console.log(reponse);
                username=reponse.data[0].login;
                // 返回promise
                return axios.get(`https://api.github.com/users/${username}/repos`);
            }).then(reponse=>{
                console.log(reponse.data);
            })
            // 监听错误的发生catch
            .catch(err=>{
                console.error(err)
            })
        </script>

    reponse里面的数据

    3.练习代码

    (1)promise成功案例reslove(可更改参数名)

            // reslove 传入成功的数据
            // 如果失败就返回reject信息
            const p=new Promise((reslove,reject)=>{
                setTimeout(()=>{
                    reslove('This is successful')
                },2000);
            })
            p.then(data=>{
                // 成功的信息
                console.log(data);
            })

     (2)promise失败案例reject(可更改参数名)

            // reslove 传入成功的数据
            // 如果失败就返回reject信息
            const p=new Promise((reslove,reject)=>{
                setTimeout(()=>{
                    reject('This is successful')
                },2000);
            })
            p.then(data=>{
                console.log(data);
            }).catch(err=>{
               //失败的信息
                console.error(err);
            })

     4.多个promise的使用

      Promise.all(iterable) 方法返回一个Promise实例

       iterable参数内promise所有都成功回调完成,如果参数中promise有一个失败那么实例回调失败。失败就找catch里面的代码     

    Promise.race(iterable)方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。tip:注意定时器的时间。

     
            const usersPromise=new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    resolve(['mojombo','vanpelt','wycats']);
                },2000);
            });
            const moviePromise=new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    // resolve({name:'摔跤吧!爸爸',rating:9.2,year:2019});
                    reject(Error('No moviePromise'))
                },500);
            });

            // Promise.all([usersPromise,moviePromise])
            Promise.race([usersPromise,moviePromise])
            .then(responses=>{
                //解构赋值
                const [users,movie]=responses;
                console.log(users);
                console.log(movie);
            })
            .catch(err=>{
                console.error(err);
            })

     

     

  • 相关阅读:
    # IDEA使用技巧
    # 分治算法实例代码
    # 蓝桥杯—开关问题
    PAT 甲级测试题目 -- 1011 World Cup Betting
    PAT 甲级测试题目 -- 1010 Radix
    PAT 甲级测试题目 -- 1009 Product of Polynomials
    PAT 甲级测试题目 -- 1008 Elevator
    PAT 甲级测试题目 -- 1007 Maximum Subsequence Sum
    PAT 甲级测试题目 -- 1006 Sign In and Sign Out
    PAT 甲级测试题目 -- 1005 Spell It Right
  • 原文地址:https://www.cnblogs.com/linxim/p/11769752.html
Copyright © 2011-2022 走看看