有人可以解释Angular Promise和之间的区别Observable吗?
每个例子都有助于理解这两种情况.在什么情况下我们可以使用每个案例?
如果我称之为ngOnInit(),使可观察到的调用来获取数据的功能,是ngOnInit的this.getSomething()调用还是异步或不ngOnInit等到this.getSomething()返回一个结果?基本上"doSomethingElse"在this.getSomething()完成之前或之后在ngOnInit()中执行了吗?
ngOnInit() {
this.getSomething();
doSomethingElse;
}
getSomething() {
this.someService.getData()
.subscribe(
result => {
this.result = result;
},
error => this.errorMessage = <any>error);
}
Run Code Online (Sandbox Code Playgroud) 我已经开始实现角度通用,并能够通过服务器端渲染呈现html的静态部分.我面临的问题是,正在进行API调用,服务器正在呈现html而不等待http调用完成.因此,我的模板依赖于从api调用获得的数据的部分不会在服务器上呈现.
更多信息:
我在节点服务器中使用身份验证服务,只有在用户通过身份验证时才会为索引html提供身份验证,并在响应时设置cookie.
每当我从angular进行API调用时,我也会将cookie作为标头发送,因为依赖服务也会使用令牌验证用户.对于服务器端呈现,由于cookie在服务器级别不可用,我已成功注入请求并为API调用选择cookie.因此,API调用是成功的,但服务器不等待呈现,直到promise解析.
我试过的步骤没有成功:
我已根据此评论中的建议更改了我的区域版本https://github.com/angular/universal-starter/issues/181#issuecomment-250177280
如果需要进一步的信息,请告诉我.
将我引导到一个有角度的通用样板,它可以帮助我.
在过去,您可以使用isBrowserAngular Universal来检查您的页面是否在浏览器中呈现(因此您可以使用localStorage之类的东西),或者它是否正在进行服务器端预呈现.
但它似乎angular2-universal被解散了@angular/core,@angular/platform-server并且@angular/platform-browser.
我在Angular 4的API文档中寻找类似的功能,并试图在源代码的某个地方找到它,但没有运气.
我错过了什么或Angular 4检查渲染是否在浏览器中运行的方式是什么?或者我应该只检查是否window已定义?