用promise封裝一個ajax

紫Young菌發表於2018-08-21

眾所周知,在前端請求中,一般常用ajax進行互動,目前市場上也有一些用promise封裝好的解決方案,比如axios,用起來很方便,但是作為技術人員,只會用別人的輪子,那也不是我們性格,下面手動封裝一個原生的ajax

直接上程式碼

function pajax({url=null, method='GET', dataType='JSON', async='true'}){ //這裡有四個引數,對應常用的ajax配置,這裡用ES6設定預設引數的方式進行設值
    return new Promise((resolve,reject)=>{
        let xhr = new XMLHttpRequest
        xhr.open(method, url, async)
        xhr.responseType = dataType
        xhr.onreadystatechange = () =>{
            //狀態碼做一個簡單的正則驗證
            if(xhr.readyState === 4 && (!/^[23]\d{2}$/.test(xhr.status))) {
				let result = xhr.responseText
				resolve(result)
			}
        }
        xhr.onerror = (err) => {
            reject(err)
        }
        xhr.send()
    })
}

pajax({
    url:'./test.json', 
    method: 'get'
}).then((result)=>{
    console.log(result)
},(err)=>{
console.log(err)
})
複製程式碼

相關文章