setTimeout在Angular 5中不起作用

时间:2018-03-02 14:18:29

标签: javascript angular settimeout angular5

我很确定这是一个愚蠢的问题,这就是为什么我找不到答案(或者至少我希望这是一个愚蠢的问题,快速回答)。由于某种原因,setTimeout无法在我的一个Angular 5组件中运行。相关代码如下所示:

onSubmit(...movieData) {
    this.movieService.addMovie(movieData)
        .subscribe(
            movie => {
                this.messageService.add("Movie Was Successfully added!")
                let title = movie['title'], year = movie['year']
                setTimeout(() => {
                    this.movieService.getMovie(title, year);
                }, 5000)
            },
            error => {
                console.log(error)
                this.messageService.add(error.error)
            }
        )
  }

从代码中我可以看到,我正在尝试将一些电影数据添加到数据库中。如果电影已成功添加,我想显示一条消息5秒钟并使用setTimout,导航到另一个页面(编辑,使用this.movieService(title, year)调用结束编辑 )。好了,消息显示但是setTimeout函数中没有任何内容运行。我甚至在setTimeout之前和之内添加了console.log来确认它没有运行的setTimeout。谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果返回您未订阅的observable,则

RelationshipId可能不会触发。这是因为从builder.HasOne(e => e.Relationship) .WithOne() .HasForeignKey<Class2>(e => e.RelationshipId); // ^ ^ // (1) (2) 返回的大多数Observable都是冷观察者,直到他们订阅才会执行。

另见HttpClient - Always subscribe