美文网首页
封装AJAX,以及使用promise

封装AJAX,以及使用promise

作者: Save_Onfir3 | 来源:发表于2018-10-12 22:20 被阅读0次

以下是一个封装好的AJAX:

window.jQuery.ajax = function({url,method,body,successFn,failFn}){
    let Aa = new XMLHttpRequest()
    Aa.open(method,url)
    Aa.onreadystatechange = () => {
        if(Aa.readyState === 4){
        if(Aa.status >= 200){
            successFn.call(undefined,Aa.responseText)
        }else if(Aa.status >= 400){
            failFn.call(undefined,Aa)
            }
        }
}
    Aa.send(body)
}

window.$ = window.jQuery

myButton.addEventListener('click',(e) => {
    window.jQuery.ajax({
        url:'/xxx',
        method:'post',
        body:'a1&b2',
        successFn:(Aa.responseText) => {console.log(1)},
        failFn:(Aa) => {console.log(2)}
    })
})

AJAX如果要符合promise的写法,就必须return一个new promise,然后把要做的事放在new promise里面,成功了就调resolve,失败了就调reject,promise会暴露一个叫then()的API,这个then()接受两个函数,如果执行代码里的动作成功了,就会调第一个函数,如果失败了,就会调第二个函数。

promise本质上是制定了一种规范,AJAX返回了一个promise实例,这个promise实例是有一个then()属性的
promise这个函数接受一个函数,然后返回一个带then()的hash,这个then()接受两个函数,返回一个带then()的hash

自己封装一个promise要记的六个要点:

return new promise(function(resolve,reject){})
//这六个单词及其顺序还有括号都得牢牢记住

以下是上面代码的升级版,以满足promise规则:

window.jQuery.ajax = function({url,method,body}){
    return new promise(function(resolve,reject){
    let Aa = new XMLHttpRequest()
    Aa.open(method,url)
    Aa.onreadystatechange = () => {
        if(Aa.readyState === 4){
        if(Aa.status >= 200){
            resolve.call(undefined,Aa.responseText)
        }else if(Aa.status >= 400){
            reject.call(undefined,Aa)
            }
        }
    }
    Aa.send(body)
 })
}


myButton.addEventListener('click',(e) => {
    window.jQuery.ajax({
        url:'/xxx',
        method:'post',
        body:'a1&b2',
    }).then((Aa.responseText) => {console.log(Aa.responseText)},
            (Aa) => {console.log(Aa)
 })
})

相关文章

  • 封装AJAX,以及使用promise

    以下是一个封装好的AJAX: AJAX如果要符合promise的写法,就必须return一个new promise...

  • Promise封装_AJAX

    Promise封装_AJAX 调用格式

  • ES6异步请求

    Promise //Promise其实就是ajax的一个封装方式,简化ajax复杂度//Promise-all适合...

  • 封装 jQuery.ajax

    封装一个 jQuery.ajax 升级jQuery.ajax 满足 Promise 规则

  • Promise应用

    1、使用Promise封装Ajax请求 作者:这波能反杀链接:https://www.jianshu.com/p/...

  • 使用promise封装ajax操作

    原文:https://blog.csdn.net/Little_Pig_Bug/article/details/8...

  • 使用promise封装ajax请求

    封装一个ajax请求方法: 调用ajax方法,发送请求

  • Ajax

    标签: Ajax 正文 一、实现一个原生Ajax 二、Ajax状态 三、将原生的 ajax 封装成 promise

  • fetch

    Fetct fetch:系统基于promise封装的ajax方法 fatch().then().then() 缺点...

  • 异步编程笔记

    环境:chrome 80演习:用Promise async/await封装$.ajax Promise 第一次请求...

网友评论

      本文标题:封装AJAX,以及使用promise

      本文链接:https://www.haomeiwen.com/subject/mklnaftx.html