Promise 对象的处理

一、MDN Web Plus 社区的详细描述:

Promise - JavaScript | MDN (mozilla.org)

二、什么时候会出现Promise 对象

在这里插入图片描述

1)、使用axios 获取的返回值
// 创建axios 示例
const crissyService = axios.create({
    baseURL: serverConfig.baseURL,
    timeout: 5000,
});

// 请求拦截
crissyService.interceptors.request.use(
    (config) => {
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
);

//响应拦截
crissyService.interceptors.response.use(
    (res) => {
        let data = res.data;
        
        
        return data;	//这里的 data 在返回时会被封装成哟个Promise 对象
    },
    (error) => {
        let message = "";
        
        }
        return Promise.reject(message);
    }
);

export default crissyService;
2)、使用 aysnc 声明的函数的返回值
    const test = async function () {
      let message = "Crissy will be the Great!";
      return message;
    };

    console.log(test());

执行结果:

在这里插入图片描述

3)、使用Promise 对象的 .then()方法的返回值
    const test = async function () {
      let message = "Crissy will be the Great!";
      return message;
    };

    const crissyTest = test().then((res) => {
      console.log(res);
      return res;
    });

    console.log("crissyTest  =>", crissyTest);

执行结果(请忽略其执行顺序)

在这里插入图片描述

三、如何将Promise 对象封装的结果值取出来

1)、await 出来(await 只能在async 声明的函数中使用)
    const test = async function () {
      let message = "Crissy will be the Great!";
      return message;
    };

    const crissyTest = async function() {
      console.log(await test());
    };

    crissyTest();

执行结果(变为普通的字符串):

在这里插入图片描述

2)、使用promise 对象封装的 .then 方法
    const test = async function () {
      let message = "Crissy will be the Great!";
      return message;
    };

    const crissyTest = test().then((res) => {
      console.log(res);
    });

执行结果和上面一样

四、实际开发中处理Promise 对象(Vue3)

  setup() {
    // 先定义一个对象,用来接收返回的数据 (利用其作用域接收)
    let cardInfos = reactive({
      list: [],
    });

    // 向后端请求数据
    const getCardInfo = function () {
      let params = {
        pageNum: 1,
        pageSize: 2,
      };
    //getCardInfoAPI 是经axios 封装后的函数
      getCardInfoAPI(params).then((result) => {
        cardInfos.list = result.data;	//将数据从Promise 对象中提前出来
      });
    };

    getCardInfo();//调用函数,可以放在钩子函数中      
    return {
      cardInfos,
    };
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值