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

可以用于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

http://www.kler.cn/a/566544.html

相关文章:

  • 【MATLAB代码】RSA加密和解密例程
  • 4个小时开发DeepSeek+baiduNaotu一键生成思维导图
  • DeepSeek-V3:AI语言模型的高效训练与推理之路
  • 基于coze+微信小程序实现图片上传并利用大模型解析
  • FX PDF编辑器支持在手机上进行各种PDF文档的操作
  • 【HeadFirst系列之HeadFirst设计模式】第14天之复合模式:设计模式的终极组合拳!
  • STM32呼吸灯实验手册(TIM定时器)
  • 基于Spring Boot + Vue的常规应急物资管理系统设计与实现
  • 构造一个工具(TravelSQLAgentTool),利用大语言模型(例如 Llama 模型)来完成 SQL 查询代理工具
  • XR应用测试:探索虚拟与现实的边界
  • unity pico开发 一:环境准备
  • 核弹级技术革命——搭配deepseek-r1满血版的腾讯云ai助手(codex)仅用14天独立开发出适配ARM架构的微内核操作系统!
  • 遇到liunx服务器IO负载,读IO流量峰值347MB/s,排查并解决。
  • 【STM32F103ZET6——库函数】4.串口通讯
  • Web3.py 入门笔记
  • 用大白话解释基础框架Spring Boot——像“装修套餐”一样简单
  • 2025年如何实现安卓、iOS、鸿蒙跨平台开发
  • vscode中使用PlatformIO创建工程加载慢
  • xss自动化扫描工具-DALFox
  • 阿里云的 ECS(Elastic Compute Service)实例