前端promise的基本使用

Promise是一个JS内置对象,可以直接通过new关键字调用

let value  = 1
// promise的参数为一个回调函数,
// 回调函数又可以接收两个参数,
// 两个参数又是一个函数
const pro = new Promise((resolve, reject) => {
	if (value == 1) {
		resolve();//调用resolve函数可以将promise的状态改为成功
	} else {
		reject()//调用reject函数可以将promise的状态改为失败
	}
})
console.log(pro,'pro')

 

当我们调用resolve函数的时候promise的状态就会变成 成功的状态,成功的状态叫:fulfilled,据说以前老的浏览器状态叫resolved

 const pro  = new Promise((resolve,reject)=>{
    resolve('成功的值');//可以传入成功的value值
    })
   console.log('成功的状态',pro);

当我们调用reject的时候promise就会变成失败的状态,失败的状态叫rejected

   const pro  = new Promise((resolve,reject)=>{
    reject('失败的值');//可以传入失败的value值
    })
   console.log('失败的状态',pro);

 如果同时调用两个函数,则只会变成先调用的那个函数的状态,状态只会改变一次

然后通过.then方法我们可以指定promise成功与失败的回调

//    .then接收两个回调函数,成功与失败,默认第一个是成功的回调函数
   pro.then(
    // 成功的回调
    res=>{console.log('res',res);},
    // 失败的回调
    err=>{console.log('err',err);}
   )

如果不想在.then中调用失败的回调也可以直接通过.catch方法指定失败的回调

  pro.catch(
    // 此时只需指定一个回调即可,在.then里面如果不想写成功的回调可以用undefin代替
    err=>{console.log(err);}
    )
  },

链式调用

 const pro  = new Promise((resolve,reject)=>{
       const date = Date.now();
      if (date % 2 === 0) {
        resolve(date)
      } else {
       reject('失败了')
      }
    })
   pro.then(
    //此处的结果由new出来的promise结果决定,如果成功就调成功回调,失败就调失败回调
    res=>{console.log(res,'第一次res');return Promise.resolve('新的成功')},//如果此处返回一个promise,则新的promise状态由这个返回的promise状态决定
    err=>{console.log(err,'第一次res');return Promise.reject('新的失败')}//如果此处返回一个promise,则新的promise状态由这个返回promise状态决定
    ).then(
      res=>{console.log(res,'第二次res'); return '888'},//如果返回的是一个非promise,则下一个promise状态直接为成功,成功值为返回的值
      err=>{console.log(err,'第二次err');},
    ).then(
      res=>{console.log(res,'第三次res');},//由于上一个promise返回的值是非promise,所以直接调成功的回调,返回‘888’
      err=>{console.log(err,'第三次err');}
    )

前端面试中,Promise是一个常见的话题。Promise是一种用于处理异步编程的解决方案。它有三种状态,分别是pending(初始)、fulfilled(实现)和rejected(失败)。 在面试中,可能会问到一些与Promise相关的问题,例如: 1. 什么是Promise?它解决了什么问题? 2. Promise有哪些状态?分别代表什么意思? 3. 如何创建一个Promise对象? 4. 如何使用Promise来处理异步操作? 5. Promise的.then()和.catch()方法分别用来做什么? 6. 如何使用Promise.all()和Promise.race()方法? 7. Promise的优缺点是什么? 这些问题旨在考察面试者对Promise的理解和应用能力。对于求职者来说,了解Promise基本概念和用法是非常重要的,因为在实际开发中,Promise已经成为了处理异步操作的标准方法之一。 在回答这些问题时,建议面试者结合自己的实际经验和理解,简洁明了地回答问题,并且可以通过举例说明自己对Promise的理解和应用能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端Promise的理解的面试题](https://download.csdn.net/download/qq_51588894/87728692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [前端Promise相关面试题以及知识点](https://blog.csdn.net/qq_22182989/article/details/106891543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [前端面试题之Promise](https://blog.csdn.net/weixin_49014702/article/details/122938017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值