promise
promise作用
- 主要用于异步计算
- 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
- 可以在对象之间传递和操作promise,帮助我们处理队列
promise是什么?
- Promise 是一个构造函数,是异步编程的一种解决方案。所谓Promse,它本身就是一个容器,里面保存着异步操作的结果,对的,这和回调函数类似。
- Promise 容器本身不是异步的,而里面封装一个异步任务。他有三种状态,即:1.pending(进行中)、2.resolved(成功)、3.rejected(失败)。状态只能变为一种
promise是用来解决两个问题的:
回调地狱,代码难以维护, 常常第一个的函数的输出是第二个函数的输入这种现象
promise可以支持多个并发的请求,获取并发请求中的数据
这个promise可以解决异步的问题,本身不能说promise是异步的
代码
import axios from 'axios'
import Vue from 'vue'
import loading from '../../components'
Vue.use(loading)
const server = axios.create({
baseURL:'https://api.it120.cc',
timeout:10000
})
// 请求拦截
server.interceptors.request.use(config=>{
Vue.$loading.show();
if(localStorage.getItem('token')){
config.headers.token = localStorage.getItem('token')
}
return config
},err=>{
console.log(err);
})
// 响应拦截
server.interceptors.response.use(res=>{
if(res.data=='无效token'){
console.log('token无效,重新登录');
Vue.$loading.hide();
}else{
Vue.$loading.hide();
return res
}
},err=>{
setTimeout(()=>{
Vue.$loading.hide();
},1000)
switch (err.code) {
case 500:
console.log('服务器错误')
break;
case 404:
console.log('页面找不到了')
break;
default:
console.log('网络连接错误')
break;
}
})
export default server