发表于: 2019-12-27 23:24:25
1 1237
今天完成的事情:
1.任务七。学习promise,axios。
明天计划的事情:
1.继续学习promise,axios
遇到的问题和收获:
1.之前的组件
Articlemain里有插槽,里面放显示的路由,即后面的路由应该会直接覆盖这个slot。
2.Promise是异步编程的一种解决方案
封装一个网络请求的函数,往往会传入另外一个函数,在数据请求成功时,将数据通过传入的函数回调出去。
网络请求非常复杂时,结构凌乱,此时就需要promise
一般情况下是有异步操作时,使用Promise对这个异步操作进行封装
new Promise((resolve, reject) => {
在执行传入的回调函数时,会传入两个参数,resolve,reject,这两个参数本身又是函数
一旦有异步操作,用promise包起来,异步操作拿到结果后,不要在回调函数里面处理,通过resolve调用一下,将结果传到then
new Promise((resolve, reject) => {
//第一次网络请求的代码
setTimeout(() => {
//成功的时候调用resolve
resolve()
}, 1000)
}).then(() => {
//第一次拿到结果的处理代码
console.log('Hello World');
Promise把data传入resolve,然后then才能默认拿得到data
其它的处理方式,不写catch,把两个函数都写在then里面
.then(函数1,函数2)
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Hello VueJs')
reject('error message')
}, 1000)
}).then(data => {
console.log(data);
}, err => {
console.log(err);
})//可以写在then里面,写2个函数,成功和拒绝的
promise all语法
Promise.all([
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('result1')
}, 2000)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('result2')
}, 1000)
})
]).then(result => {
console.log(result);
})
它可以判断两个请求是否都已经完成了。这里用setTimeout模拟一下请求。就不用自己添加多余繁琐的判断代码了
promise all里面是数组形式,打印出来效果。
然后接下来再看看axios
评论