用promise封裝一個ajax

衆所周知,在前端請求中,通常經常使用ajax進行交互,目前市場上也有一些用promise封裝好的解決方案,好比axios,用起來很方便,可是做爲技術人員,只會用別人的輪子,那也不是咱性格,下面手動封裝一個原生的ajax前端

直接上代碼ios

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)
})
複製代碼
相關文章
相關標籤/搜索