发表于: 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) => {

在执行传入的回调函数时,会传入两个参数,resolvereject,这两个参数本身又是函数

一旦有异步操作,用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





返回列表 返回列表
评论

    分享到