vuex、promise

const {data: {data: { channels: payload },},} = await 
axios.get("");

多层解构,重命名

import axios from "axios"

export default {
  namespaced: true,
  state: {
    allData: {}
  },
  mutations: {
    updateAllData (state, {id, list}) {
      // allData这个对象 这种赋值方式 是不会改变 地址的
      // vue监听对象,需要发现地址改变,才会动态响应
      // state.allData['key'] = [1, 2, 3]

      // id: []
      state.allData = {...state.allData, [id]: list}
    }
  },
  actions: {
    async getAllData (context, cataId) {
      if(context.state.allData[cataId]) {
        return
      }
      const data = await axios.get(`/v1_0/articles?
      channel_id=${cataId}&timestamp=${Date.now()}&with_top=1`)

      console.log(data)
      const list = data.data.data.results
      context.commit('updateAllData',{id:cataId,list:list})
    }
  }
}

promise:

promise可以解决回调地狱的问题。

// const p = new Promise(function (resolve, reject) {
//   reject('失败')
// })
// const p = Promise.reject('失败')  //相当于上面的简写
const p = Promise.reject('失败')

p.then(function (res) {
  console.log(res)
}, function(err) {
   console.log(err + '!!!')
})

async /await:

await 表示强制等待的意思,await关键字的后面要跟一个promise对象,它总是等到该promise对象resolve成功之后执行,并且会返回resolve的结果

由于await的强制等待,所以必须要求使用await的函数必须使用async标记, async表示该函数就是一个异步函数,不会阻塞其他执行逻辑的执行

var axios = {
  get() {
    return new Promise(function (resolve, reject) {
      setTimeout(function () {
        const obj = {
          obj: {
            data: {
              info: '信息'
            }
          }
        }
  
        resolve(obj)
      }, 500)
    })
  }
}

async function testFn () {
  const { obj: {data} } = await axios.get()

  console.log(data)

  console.log(456)
}

testFn()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值