首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.AspNetCore.NodeServices在角OnInit中捕获RxJS IntervalObservable

Microsoft.AspNetCore.NodeServices在角OnInit中捕获RxJS IntervalObservable
EN

Stack Overflow用户
提问于 2018-03-16 04:04:32
回答 1查看 80关注 0票数 0

我试图在OnInit中使用IntervalObservable启动一个角4组件的重复客户端操作。应用程序使用ASP.NET核心。

执行可观察的订阅。但是,Microsoft.AspNetCore.NodeServices中的服务器端预录制似乎正在执行订阅--永远不会将呈现的页面返回到浏览器。

我在这里做错什么了?下面是复制的步骤。在这个示例中,我只是尝试在浏览器中console.log心跳。

复制步骤

  1. cd创建到一个新目录中。
  2. 运行dotnet new angular
  3. 运行npm install
  4. 用下面的代码片段替换ClientApp/app/components/home/home.component.ts的内容。
  5. 运行dotnet run并转到http://localhost:5000
代码语言:javascript
复制
    import { Component, OnInit } from '@angular/core';
    import { IntervalObservable } from "rxjs/observable/IntervalObservable";

    @Component({
        selector: 'home',
        templateUrl: './home.component.html'
    })
    export class HomeComponent implements OnInit {
        ngOnInit(): void {
            IntervalObservable.create(1500).subscribe((iteration:number)=>console.log(iteration));
        }
    }

当请求传入时,调试控制台将开始报告iteration,如代码片段所示。页面呈现程序超时,并最终返回一个错误页,但是IntervalObservable订阅继续在调试控制台中迭代。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-18 15:34:15

我使用https://stackoverflow.com/a/46893433/402726中所示的技术找到了一个分辨率。

本质上,我们使用提供的platform函数来确定我们是否在浏览器中执行,如果是的话,运行浏览器中的心跳。

下面是实现修复的问题片段的更新形式。

代码语言:javascript
复制
import { PLATFORM_ID, Component, Inject, OnInit } from "@angular/core";
import { isPlatformBrowser } from "@angular/common";
import { IntervalObservable } from "rxjs/observable/IntervalObservable";

@Component({
    selector: "home",
    templateUrl: "./home.component.html"
})
export class HomeComponent implements OnInit {
    private isRunningInBrowser: boolean;
    constructor( @Inject(PLATFORM_ID) platformId: string) {
        this.isRunningInBrowser = isPlatformBrowser(platformId);
    }
    public ngOnInit(): void {
        if (!this.isRunningInBrowser) return;
        IntervalObservable.create(1000).subscribe(() => console.log("on an interval"));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49313034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档