欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 可以用于promise面试的例子--其1

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

2025/9/21 16:27:01 来源:https://blog.csdn.net/weixin_43131046/article/details/145933632  浏览:    关键词:可以用于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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com