Promise入门之:让函数返回一个Promise对象

Promise入门之:让函数返回一个Promise对象

1:返回一个resolve

function foo() {
    return Promise.resolve('aaa')
            .then(data => { console.log("then1: ", data); })
            .then(data => { console.log("then2: ", data); return 'bbb'; })
            .then(data => { console.log("then3: ", data); return Promise.resolve('ccc'); })
            .catch(err => { console.log("eee"); return Promise.reject('eee'); });
}

console.log("111")
foo()
  .then(data => { console.log("333: ", data); })
  .catch(err => { console.log("eee"); return 'ggg'});
console.log("222")

运行结果:

$ node test.js 
111
222
then1:  aaa
then2:  undefined
then3:  bbb
333:  ccc

2: 返回一个reject

function foo() {
    return Promise.resolve('aaa')
            .then(data => { console.log("then1: ", data); })
            .then(data => { console.log("then2: ", data); return 'bbb'; })
            .then(data => { console.log("then3: ", data); return Promise.reject('ccc'); })
            .catch(err => { console.log("eeee1: ", err);  return Promise.reject('ddd'); });
}

console.log("111")
foo()
  .then(data => { console.log("333: ", data); })
  .catch(err => { console.log("eeee2"); return 'ggg'});
console.log("222")

运行结果:

$ node test.js 
111
222
then1:  aaa
then2:  undefined
then3:  bbb
eeee1:  ccc
eeee2

注意在函数foo里面"then3"的位置,需要返回Promise.reject(),然后这个reject被"eeee1"处的catch捕获,然后这里必须再返回一个Promise.reject()到函数外面;如不然,相当于foo函数内部消化掉了"then3"位置的exception,导致在函数外部"eeee2"位置并不能捕获异常,因为此处会认为就没有异常发生。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 8,735评论 1 56
  • title: promise总结 总结在前 前言 下文类似 Promise#then、Promise#resolv...
    JyLie阅读 12,332评论 1 21
  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 7,344评论 6 19
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 11,044评论 26 95
  • 一直想建立一个系统,或者说打通中医,西医,原始点医学,还有佛法上关于人体健康疾病等理论之间的通道,然后建立一个大一...
    四维剑阅读 242评论 0 0