【发布时间】:2016-11-10 23:33:39
【问题描述】:
我目前正在尝试实现我自己的 Promise,以便在 Angular 2 中使用。如果我 reject 承诺,我将获得 Error: Uncaught (in promise): nope(…),但仅限于第一个被拒绝的 Promise。
是Angular 2.0.0-rc.4,但我在其他行为中注意到了这一点。我的问题是,这是我对 Promises 理解的错误,还是应该向 Angular 项目报告的错误?
示例代码:
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");
控制台(Google Chrome 51.0.2704.106,Linux 64 位):
create promise
setting up
setup done
reject: nope
Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.
Unhandled Promise rejection: nope ; Zone: <root> ; Task: Promise.then ; Value: nope
Error: Uncaught (in promise): nope(…)
【问题讨论】:
-
你是使用 es6 promise 还是有自己的实现?
-
据我所知,实现是来自
zone.js的ZoneAwarePromise。这就是为什么我认为它与 Angular 有关。 -
标题有点误导。 “在 Angular 2 中实现自己的 Promise”明确表明有自制的 Promise 实现。