promise

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。
Promise 对象是由关键字 new 及其构造函数来创建的。该构造函数会把一个叫做“处理器函数”(executor function)的函数作为它的参数。这个“处理器函数”接受两个函数——resolve 和 reject ——作为其参数。当异步任务顺利完成且返回结果值时,会调用 resolve 函数;而当异步任务失败且返回失败原因(通常是一个错误对象)时,会调用reject 函数。

1.promise是window下的一个属性,他接受一个函数,该函数有两个参数

构造一个promise实例:

var a= new promise(function(resolve,reject){
    要执行的代码
    if(contions){
        resolve.call(null,'sucess')
    }else{
        reject.call(null,'fail')
    }
})

a.then(
        (text)=>{console.log(text)},//sucess
        (text)=>{console.log(text)}//fail
        );

2.promise在AJAX中的应用

//封装一个AJAX
window.jquery={}
window.$=window.jquery
jquery.ajax=function(options){
    return new Promise(function(resolve,reject){
        var request=new XMLHttpRequest();
        let {url,method,body,headers}=options
        console.log(method)
        request.open(method,url); 
        for(let key in headers){
            let value =headers[key]
            request.setRequestHeader(key,value)
        }
        request.send(body);

        request.onreadystatechange=function(){

            if(request.readyState==4){
                if(request.status < 400){
                    resolve.call(undefined,request.responseText)
                }else{
                    reject.call(undefined,request)
                }
            }
        }

    })
}


let button=document.getElementById("button");
let number = document.getElementById('number');

button.addEventListener('click',()=>{
    let a=$.ajax({
        'method':'post',
        'url':'./x',
        'body':'"wang":"15"',
        'headers':{
            'name':'wang',
            'Content-Type':'application/x-www-form-urlencoded'
        }
    }).then(
        (Text)=>{console.log(Text)},
        (text)=>{console.log(text.responseText)}
    )
});

上面,调用AJAX之后,会返回一个promise对象,promise有一个then方法。then方法接受两个函数,成功是执行第一个函数,失败时执行第二个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值