setTimeout在Angular 5中不起作用

问题描述 投票:2回答:1

我很确定这是一个愚蠢的问题,这就是为什么我找不到答案(或者至少我希望这是一个愚蠢的问题,快速回答)。由于某种原因,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)调用End Edit编辑)。好了,消息显示但是setTimeout函数中没有任何内容运行。我甚至在setTimeout之前和之内添加了console.log来确认它没有运行的setTimeout。谁知道我做错了什么?

javascript angular settimeout angular5
1个回答
1
投票

如果这会返回您未订阅的可观察量,则movieService.getMovie可能不会触发。这是因为从HttpClient返回的大多数Observable都是冷可观察者,在他们订阅之前不会执行。

另见HttpClient - Always subscribe

© www.soinside.com 2019 - 2024. All rights reserved.