在Angular 2中拒绝Promise时未处理的Promise拒绝

时间:2016-07-08 11:54:24

标签: angular promise

我目前正在尝试实现我自己的Promise以在Angular 2中使用。如果我Install-Package EntityFramework 承诺,我将获得reject,但仅限于第一个Promise拒绝。

它是Error: Uncaught (in promise): nope(…),但我在其他行为中注意到了这一点。我的问题是,这是我对Promises的理解中的错误,还是应该报告给Angular项目的错误?

示例代码:

Angular 2.0.0-rc.4

控制台(谷歌浏览器51.0.2704.106,Linux 64位):

import {Component} from '@angular/core';
import {bootstrap} from '@angular/platform-browser-dynamic'
@Component({
    template: "TestComponent"
})
class TestComponent {
}
bootstrap(TestComponent, []);

let p = new Promise((resolve, reject) => {
    console.log("create promise");
    reject("nope");
});
console.log("setting up");
p.then(r => console.log("then: " + r));
p.catch(e => console.log("reject: " + e));
console.log("setup done");

2 个答案:

答案 0 :(得分:11)

应该是

p
.then(r => console.log("then: " + r))
.catch(e => console.log("reject: " + e));

p.then(...)单独创建未处理的链,这困扰了Zone.js.如果你已经处理过Bluebird的“未经处理的拒绝”,你可能已经知道了这些规则。

答案 1 :(得分:3)

您可以执行以下操作:

let p = new Promise((resolve, reject) => {
  console.log("create promise");
  reject("nope");
});
console.log("setting up");
p.then(r => console.log("then: " + r), // <-----
   e => console.log("reject: " + e));