当前位置: 首页 > news >正文

可以用于promise面试的例子--其1

项目里有很多不易读的写法,写几个demo,一起看看

new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
     resolve('第一个promise方法')
  },500)
}).then((result) => {
   return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  })
}).catch((err) => {
  console.log('第一个promise发生了失败', err)
});

请问,catch方法捕捉的是“第一个promise”的失败,还是“第一个promise成功后又执行的promise”的错误?

结果:

new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
     resolve('第一个promise方法')
  },500)
}).then((result) => {
   return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  })
}).catch((err) => {
  console.log('失败', err)
});
//--------第一个promise方法
//--------第一个promise成功后又执行的promise
//失败 第一个promise成功后又执行的promise
new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
    reject('第一个promise方法')
  },500)
}).then((result) => {
   return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  })
}).catch((err) => {
  console.log('失败', err)
});
// --------第一个promise方法
// 失败 第一个promise方法

答案:

  • 多个promise嵌套,按顺序执行
  • 第一个promise出错,catch捕捉的就是第一个的
  • 第一个promise成功,进入到then逻辑,then里的失败,catch可以捕捉到
new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
    resolve('第一个promise方法')
  },500)
}).then((result) => {
   new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  }).catch((err) => {
    console.log('err', err)
    // return Promise.resolve('第一个promise成功后又执行的promise')
})
}).catch((err) => {
  console.log('失败', err)
});
// --------第一个promise方法
//--------第一个promise成功后又执行的promise
// err 第一个promise成功后又执行的promise
new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
    resolve('第一个promise方法')
  },500)
}).then((result) => {
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  }).catch((err) => {
    console.log("执行了么", err)
    return Promise.reject(err)
    // console.log('err', err)
    // return Promise.resolve('第一个promise成功后又执行的promise')
  })
}).catch((err) => {
  console.log('失败', err)
});

//--------第一个promise方法
//--------第一个promise成功后又执行的promise
//执行了么 第一个promise成功后又执行的promise
//失败 第一个promise成功后又执行的promise
  • 只会捕捉一次
new Promise((resolve, reject) => {
  setTimeout(function() {
    console.log("--------第一个promise方法")
    resolve('第一个promise方法')
  },500)
}).then((result) => {
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      console.log("--------第一个promise成功后又执行的promise")
       reject('第一个promise成功后又执行的promise')
    },1100)
  }).catch((err) => {
    console.log("执行了么", err)
    // return Promise.reject(err)
    // console.log('err', err)
    // return Promise.resolve('第一个promise成功后又执行的promise')
  })
}).catch((err) => {
  console.log('失败', err)
});

//--------第一个promise方法
//--------第一个promise成功后又执行的promise
//执行了么 第一个promise成功后又执行的promise

相关文章:

  • 基于单片机的机床切屑运输系统设计
  • cv2.solvePnP 报错 求相机位姿
  • 车载电源管理新标杆NCV8460ADR2G 在汽车电子负载开关中的应用
  • 删除idea recent projects 记录
  • springboot项目部署脚本
  • c++11新特性 chrono库
  • yolov8 目标追踪 (源码 +效果图)
  • JS中let和var变量区别
  • LeetCode刷题 -- 29. 两数相除
  • 8、HTTP/1.0和HTTP/1.1的区别【高频】
  • 测试金蝶云的OpenAPI
  • Python面试(八股)
  • 如何管理路由器
  • 做表格用什么软件?VeryReport让数据管理更高效!
  • 如果使用MODBUS通用类进行通信
  • 【无标题】Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错
  • 【Nodejs】用pm2管理nodejs服务
  • PyCharm中通过命令行执行`pip`命令下载到哪里了:虚拟环境目录下
  • 3 算法1-3 回文质数
  • 使用esp32接入大模型(http请求)
  • 最优网络做网站怎么样/域名查询官网
  • 巩义做网站/国家中医药管理局
  • thinkphp 企业网站/网上广告怎么推广
  • 建站abc和凡科哪个好用/网络营销总监岗位职责
  • tomcat做的网站打不开了/体验营销是什么
  • 怎么做导购网站/郴州网站建设网络推广平台