js——promise用法

js——promise用法.1.promise基本用法<script>constpromise=newPromise((resolve,reject)=>{console.log(1);resolve(5);console.log(2)}).then(val=>{console.log(val);});pro

大家好,又见面了,我是你们的朋友全栈君。

.1.promise基本用法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 <script>
        const promise =new Promise((resolve,reject)=>{ 
   
            console.log(1);
            resolve(5);
            console.log(2)
        }).then(val=>{ 
   
            console.log(val);
        });
        promise.then((value)=>{ 
   
            console.log(value);
        })
        console.log(4);
        setTimeout(function(){ 
   
            console.log(6);
        })
  </script>

在这里插入图片描述

 <script>
        const promise =new Promise((resolve,reject)=>{ 
   
            console.log(1);
            reject(5);
            console.log(2)
        }).then(val=>{ 
   console.log(val);},val=>{ 
   console.log('hhh'+val)})
        .catch(val=>{ 
   console.log('jjjj'+val)});
        promise.then((value)=>{ 
   
            console.log(value);
        })
        console.log(4);
        
    </script>

在这里插入图片描述

 <script>
        const promise =new Promise((resolve,reject)=>{ 
   
            console.log(1);
            reject(5);
            console.log(2)
        }).then(val=>{ 
   console.log(val);},val=>{ 
   console.log('hhh'+val);return new Promise((res,rej)=>{ 
   rej(8)})})
        .catch(val=>{ 
   console.log('jjjj'+val)});
        promise.then((value)=>{ 
   
            console.log(value);
        })
        console.log(4);
        
    </script>

在这里插入图片描述

<script>
        const promise =new Promise((resolve,reject)=>{ 
   
            console.log(1);
            reject(5);
            console.log(2)
        }).catch(val=>{ 
   console.log('jjjj'+val)})
        .then(val=>{ 
   console.log(val);},val=>{ 
   console.log('hhh'+val);return new Promise((res,rej)=>{ 
   rej(8)})})
       
        promise.then((value)=>{ 
   
            console.log(value);
        })
        console.log(4);
        
    </script>

在这里插入图片描述

2.Promise基本用法补充

Promise的构造函数接收一个函数作为参数,该函数接受两个额外的函数,resolve和reject,这两个函数分别代表将当前Promise置为fulfilled(已成功)和rejected(已失败)两个状态。Promise正是通过这两个状态来控制异步操作的结果。在声明的时候,Promise构造函数传递的参数函数会立即执行,因此Promise使用的正确姿势是在其外层再包裹一层函数,使得构造函数中的函数按需执行,而不是立即执行。如下:
在这里插入图片描述
在这里插入图片描述

3.使用promise来解决回调地狱的问题

服务端部分代码
在这里插入图片描述

//基于Promise处理ajax请求
        function queryData(url){ 
   
            return new Promise(function(resolve,reject){ 
   
                var xhr=new XMLHttpRequest();
                xhr.onreadystatechange=function(){ 
   
                    if(xhr.readyState!=4)return;
                    if(xhr.readyState==4&&xhr.status==200){ 
   
                        //处理正常的情况
                        resolve(xhr.responseText)
                    }else{ 
   
                        //处理异常情况
                        reject('错误')
                    }
                }
                xhr.open('get',url);
                xhr.send();
            }
        )  
        }
        //发送一个ajax请求
        queryData('http://localhost:3000/data')
        .then(function(data){ 
   
            console.log(data)
        },function(data){ 
   
            console.log(data)
        })

        //发送多个ajax请求,并保证顺序
        //使用promise处理回调地狱问题
        queryData('http://localhost:3000/data')
        .then(function(data){ 
   
            console.log(data);
            return queryData('http://localhost:3000/data1')
        }).then(function(data){ 
   
            console.log(data);
            return queryData('http://localhost:3000/data2')

        }).then(function(data){ 
   
            console.log(data)
        })
       
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147996.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看Mysql锁情况

    查看Mysql锁情况#当前运行的所有事务select*frominformation_schema.innodb_trx;#当前出现的锁select*frominformation_schema.innodb_locks;#锁等待的对应关系select*frominformation_schema.innodb_lock_waits#查看下autocommit的值se…

    2022年6月1日
    35
  • “请在微信客户端打开链接”解决方案[通俗易懂]

    “请在微信客户端打开链接”解决方案[通俗易懂]1、“请在微信客户端打开链接”解决方案https://blog.csdn.net/weixin_41190571/article/details/829908392、微信调试工具无法点击授权按钮https://blog.csdn.net/Call_me_small_pure/article/details/801013073、微信web开发工具https://mp.weixin.qq.c…

    2022年5月6日
    296
  • 官场迷情–横刀灬一笑[通俗易懂]

    官场迷情–横刀灬一笑[通俗易懂]无业游民沈宜修偷瞄上小loli依琳,而他的宅女老婆秋叶却毫不知情。一次偶然的机会,沈宜修见识了美女市长苏静美的风情万种。沈宜修也开始了在依琳、静美和秋叶之间的周旋。此时事业也有所发展的沈宜修,却被美女主编林曼琴给剽窃,想要讨回公…

    2022年6月11日
    36
  • java ac自动机_ac自动机java版

    【实例简介】从别的共享资源下载的java版ac自动机,已验证使用非常好。【实例截图】【核心代码】ahocorasick_java-1.1└──ahocorasick_java-1.1├──ahocorasick│├──pom.xml│├──src││└──main││└──java││└──org││…

    2022年4月7日
    53
  • Elasticsearch:Painless 编程调试「建议收藏」

    Painless也就是无痛的意思。这是一个专为Elasticsearch而设计的。当初的设计人员取名为“Painless”,表达的意思的是在编程的时候没有疼痛感,很方便设计人员使用。由于这是一个脚本的语言,在实际的使用中,我们很难找到这些编程的方法及使用。在今天的教程中,我来讲述一下该如何来进行调试。Debug.ExplainPainless没有REPL,虽然很高兴有一天,但它不会告诉你调试Elasticsearch中嵌入的Painless脚本的全部过程,因为脚本可以访问或“上

    2022年4月17日
    58
  • wireshark捕获arp包_安卓tcp协议抓包分析教程

    wireshark捕获arp包_安卓tcp协议抓包分析教程使用Wireshark工具抓取ARP协议的数据包,分析ARP协议的地址解析过程、自主学习逻辑以及初次访问和多次访问的区别。

    2025年8月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号