Promise——promise是什么?为什么要用promise?

Promise是JavaScript中用于异步编程的一种新方法,它可以避免回调地狱,提高代码可读性和维护性。通过构造函数创建Promise对象,启动异步任务后,可以灵活地在之后绑定回调函数,甚至链式调用。当遇到错误时,可以统一通过catch方法捕获。回调地狱是指多层嵌套的回调函数,导致代码结构复杂难以阅读,且错误处理困难。使用Promise的链式调用,可以清晰地组织异步操作,简化错误处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise是什么?

  1. 抽象表达:
  • Promise是一门新的技术(ES6规范)
  • Promise是JS中进行异步编程的新的解决方案。
    (旧方案是单纯的使用回调函数)
    备注:异步编程包括fs文件操作,数据库操作,AJAX,定时器
  1. 具体表达:
  • 从语法上来说:Promise就是一个构造函数
  • 从功能上来说:Promise对象用来封装一个异步操作并可以获取其成功或者失败的和结果值。

为什么要用Promise?

指定回调函数的方式和更加灵活

  1. 旧的:必须在启动异步任务前指定
  2. promise:启动异步任务=>返回promise对象=>给promise对象绑定回调函数。(甚至可以在异步任务结束后指定多个)

支持链式调用,可以解决回调地狱的问题。

1. 什么是回调地狱?

回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调的执行的条件。
getData() {
  axios.get("./mock/data_a.json").then((res1) => {
    console.log(res1.data.code);
    axios.get("./mock/data_b.json").then((res2) => {
      console.log(res2.data.code);
      axios.get("./mock/data_c.json").then((res3) => {
        console.log(res3.data.code);
      });
    });
  });
},

2. 回调地狱的缺点?

(1) 嵌套过多会影响代码的可读性和逻辑
(2) 当某个请求失败时难以定位问题,这情况被称为回调地狱

3. 解决方案?

promise链式调用

methods:{
  getData1(url) {
    return new Promise((resolve, reject) => {
      axios.get(url).then((res1) => {
        if (res1.data.code <= 1) {
          resolve("成功");
        } else {
          reject("失败");
        }
      });
    });
  },
}


mounted(){
	this.getData1("./mock/data_a.json")
    .then((res) => {
      console.log(res);
      return this.getData1("./mock/data_b.json");
    })
    .then((res) => {
      console.log(res);
      return this.getData1("./mock/data_c.json");
    })
    .then((res) => {
      console.log(res);
    })
    .catch((err) => {
      console.log(err);
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值