用过 Promise 吗?举例说明。 如果要你创建一个返回 Promise 对象的函数,你会怎么写?举例说明。

用过 Promise 吗?举例说明。
如果要你创建一个返回 Promise 对象的函数,你会怎么写?举例说明。


用过 Promise,比如 jQuery 的 AJAX 功能,返回的就是 Promise 对象。

$.ajax({url:'/xxx', method:'get'}).then(success1, error1).then(success2, error2)
如果我自己创建 Promise 对象,我会这么写

function asyncMethod(){
    return new Promise(function (resolve, reject){
        setTimeout(function(){
            成功则调用 resolve
            失败则调用 reject
        },2000)
    })
}
//封装一个jQuery.ajax 满足Promise 规则
window.jQuery.ajax = function({url,method,body,headers}){
    return new Promise(function(resolve,reject){
        let request = new XMLHttpRequest()
        request.open(method,url) //配置request
        for(let key in headers){
            let value = headers[key]
            request.setRequestHeader(key,value)
        }
        request.onreadystatechange = ()=>{
            if(request.readyState === 4){
                if(request.status >= 200 && request.status < 300){
                    resolve.call(undefined,request.responseText)
                }else if(request.status >= 400){
                    reject.call(undefined,request)
                }
            }
        }
        request.send(body)
    })
}
//给按钮绑定点击事件
myButton.addEventListener('click',(e)=>{
    let promise = window.jQuery.ajax({
        url:'/xxx',
        method:'get',
        headers:{
            'content-type':'application/x-www-form-urlencoded',
            'frank':'18'
        }
    })

    promise.then(
        (text)=>{console.log(text)},
        (request)=>{console.log(request)}
    )
})

你可能感兴趣的:(用过 Promise 吗?举例说明。 如果要你创建一个返回 Promise 对象的函数,你会怎么写?举例说明。)