【发布时间】:2015-09-28 02:49:16
【问题描述】:
通常两个 Promise 对象是跨函数调用创建的。我已经把承诺放在一起,展示了我期望发生的事情:
new Promise((resolve, reject) => {
//function call with returned promise...
return new Promise((resolve, reject) => {
reject("rejectCall_2") //Prints nothing
})
}).catch( e1 => {
console.log('e1',e1)
})
这应该将拒绝传播到我的父母承诺中。如何在外部承诺中捕获rejectCall_2?
【问题讨论】:
-
为什么需要嵌套 2 个 promise?我看不到任何会导致这种代码的用例。
-
旁注:拒绝错误,而不是字符串。即
reject(new Error('rejectCall_2')); -
为什么要在 promise 构造函数中包装一个返回 promise 的方法调用?如果你有
foo.bar()返回一个承诺,你可以简单地foo.bar().catch(e => ...)。 -
我们有各种返回承诺的动作,这些动作经常调用索引数据库层,该层也返回承诺。我不明白你会如何硬编码承诺共享,我们只是让所有东西都返回一个承诺,然后将它们链接在一起。
-
这看起来很像promise construction antipattern。您应该不使用
new Promise将事物链接在一起。
标签: javascript ecmascript-6 es6-promise