【发布时间】:2018-07-22 02:38:33
【问题描述】:
我正在学习在 Angular 4 中使用 Jasmine 测试异步代码。所以,我在服务中创建了一个方法
getResolvedData(): Promise<boolean> {
return Promise.resolve(!!localStorage.getItem('token'));
}
并在组件的方法中订阅此承诺
getAsyncData() {
this.title = 'app';
this.service.getResolvedData().then((data) => {
return !data;
});
}
在模板中使用该组件的方法getAsyncData()作为
<a>
<span *ngIf="getAsyncData()">Async Data</span>
<span *ngIf="!getAsyncData()">No Async Data</span>
</a>
但是,由于一旦 HTML 调用组件内的方法就会创建无限循环,因此应用程序不会在 ng serve --open 上的浏览器中加载。
如何解决?
【问题讨论】:
-
您的 getAsyncData() 不返回任何内容。所以它返回未定义,这总是假的。所以你的代码相当于 No Async Data
-
此外,每次用户与应用程序交互时都会调用您的 getAsyncData(调用检测更改时)
标签: angular promise karma-jasmine es6-promise