对promise的理解

Promise是JavaScript中用于处理异步操作的对象,它可以解决回调地狱问题。Promise有三种状态:未完成、已完成和失败。通过构造函数创建Promise实例,传入一个带有resolve和reject参数的函数。then方法有两个参数,分别对应成功的回调和失败的回调。文中给出了一个使用Promise包装的ajax函数示例,展示了如何链式调用多个Promise来处理异步请求。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

例如:一些promise的理解


一、promise是什么?

promise是解决异步的方法,本质上是一个构造函数,可以用它实例化一个对象。promise只有一个参数,是一个函数,这个函数有俩个参数,参数1是resolve(成功),参2是reject(失败)。

promise有三种状态,未完成,已完成,失败。

promise有一个then方法,then方法有俩个参数,为2个函数,分别对应resolve,reject,resolve为成功时调用这个函数,失败则调用reject函数,promise主要用来解决回调地狱的问题

二、使用

代码如下(示例):

 function ajax({url,data,type='get',async=true}){
            return  new Promise(function(chenggong,shibai){

                var x  = XMLHttpRequest()
                //拼接路径和参数
                if(data && type=='get'){
                    url = url+"?"+data
                }

                x.open(type,url,async)

                if(type == 'post'){
                    x.setRequestHeader('content-type','application/x-www-form-urlencoded')
                    x.send(data)
                }else{
                    x.send()
                }

                x.onreadyStatechange=function(){
                    if(x.readystate == 4  && x.Status == 200){
                        chenggong( x.response)
                    

                    }
                }

            })

           

         
        }


       var  xx = ajax(
            {
               url:'1.json',
               data:"id=18&name=张三" ,
               success:function(da){

                 
               }
            }
        )


        xx.then(function(da){
         //da就是ajax返回的数据
         //你就可以在这写你的逻辑


         //这个return 别丢了
           return  ajax(
                {
                    url:'2.json',
                    data:"id=18&name="+da.name ,
               
                }
            )

        }).then(function(da2){
            return  ajax(
                {
                url:'3.json',
                data:"id=18&name=张三"+da2 ,
               
                }
            )
        }).then(function(da3){
            
        })


注意

 如果你写多个then,请在前面的处理函数中返回一个新的Promise对象,你忘记返回了后面的then都会默认执行第一个函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值