对Promise中的resolve,reject,catch的理解

.then()的时候到底是在then什么…
首先要理解…Promise是一个对象,有then()方法的对象
then()的入参是一个函数,通常在promise链中,入参是 一个返回promise的函数 ,这句话好像有点拗口,就是说入参是一个函数,这个函数会return一个promise对象。

如何破坏promise链

如果有这样一个promise链:

p1().then(p2).then(p3)
  .then((data) => {
    console.log('data: ' + data);
  })
  .catch((error) => {
    console.log('error: ' + error);
  });
 
function p1() {
  let p1 = new Promise((resolve, reject) => {
    console.log('p1 resolved');
    resolve(123);
  });
  return p1;
}
 
function p2() {
  let p2 = new Promise((resolve, reject) => {
    console.log('p2 rejected');
    reject(456);
  });
  return p2;
}
 
function p3() {
  let p3 = new Promise((resolve, reject) => {
    console.log('p3 resolved');
    resolve(789);
  });
  return p3;
}

上面这个例子,你看到的console.log会是这样:

p1 resolved
p2 rejected
error: 456

并没有看到 p3 的log,而是看到了error message,也就是说:
在一个promise链中,只要任何一个promise被reject,promise链就被破坏了,reject之后的promise都不会再执行,而是直接调用.catch方法,通过 .catch 能够清楚的判断出promise链在哪个环节出了问题。

//注意
let p = new Promise((resolve, reject) => {
    let result = 123;
    reject(result);
})
// 只会被第一种方式reject操作失败的结果
p.then((result)=>{ 
    console.log('success:',result);
}, (result)=>{ 
    console.log('fail:',result);
}).then(() => {
    console.log(456);
}).catch((result)=>{ 
    console.log('error:',result);
})
//输出结果
// "fail: 123"
// "456"

非Promise链中reject不会影响后面.then()的执行,并且如果reject和catch两种方式同时使用的话,只会被第一种方式reject操作失败的结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • title: promise总结 总结在前 前言 下文类似 Promise#then、Promise#resolv...
    JyLie阅读 14,213评论 1 21
  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 12,062评论 6 19
  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,781评论 1 56
  • 前言 本文旨在简单讲解一下javascript中的Promise对象的概念,特性与简单的使用方法。并在文末会附上一...
    _暮雨清秋_阅读 6,648评论 0 3
  • 潮汕地区信仰风水和重视八字算命。所以每次过年后的几天,几乎家家户户都会去佛堂求签,更虔诚些地还特地跑到汕尾市陆丰碣...
    宅小姐Echo阅读 2,790评论 0 0

友情链接更多精彩内容