Promise基本用法
const p = new Promise(resolve,reject){
if(true){
resolve()
}
if(false){
reject()
}
}
p.then(value=>{
console.log('中奖了',value)
},reason=>{
console.log('没中奖',reason)
})
XMLHttpRequest基本用法
const xhr = new XMLHttpRequest();
xhr.responseType = 'json'
xhr.open('get',url);
xhr.send();
xhr.onreadystatechange = function(){
if(xhr.readystate === 4){
if(xhr.status => 200 && xhr.status < 300){
console.log('xhr.resonse')
}else
{
console.log(xhr.status)
}
}
}
第一种封装,自己拼接query参数数据
import axios from 'axios'
export default function ajax (url, data={}, type='GET') {
return new Promise(function (resolve, reject) {
let promise
if (type === 'GET') {
let dataStr = ''
Object.keys(data).forEach(key => {
dataStr += key + '=' + data[key] + '&'
})
if (dataStr !== '') {
dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
url = url + '?' + dataStr
}
promise = axios.get(url)
} else {
promise = axios.post(url, data)
}
promise.then(function (response) {
resolve(response.data)
}).catch(function (error) {
reject(error)
})
})
}
第二种封装,直接axios.get(url,{params:data})
import axios from 'axios'
import {message} from 'antd'
export default function ajax(url, data={}, type='GET') {
return new Promise((resolve, reject) => {
let promise
if(type==='GET') {
promise = axios.get(url, {
params: data
})
} else {
promise = axios.post(url, data)
}
promise.then(response => {
resolve(response.data)
}).catch(error => {
message.error('请求出错了: ' + error.message)
})
})
}