Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setTimeout在角度5下不工作_Javascript_Angular_Settimeout_Angular5 - Fatal编程技术网

Javascript setTimeout在角度5下不工作

Javascript setTimeout在角度5下不工作,javascript,angular,settimeout,angular5,Javascript,Angular,Settimeout,Angular5,我很确定这是一个愚蠢的问题,这就是为什么我找不到答案的原因(或者至少我希望这是一个有快速答案的愚蠢问题)。出于某种原因,setTimeout在我的Angular 5组件中不起作用。相关代码如下所示: onSubmit(...movieData) { this.movieService.addMovie(movieData) .subscribe( movie => { this.messageService.a

我很确定这是一个愚蠢的问题,这就是为什么我找不到答案的原因(或者至少我希望这是一个有快速答案的愚蠢问题)。出于某种原因,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秒钟,然后使用设置超时,导航到另一页(编辑,使用
this.movieService(title,year)
调用结束编辑)。显示消息,但setTimeout函数中没有任何内容运行。我甚至在setTimeout之前和之内添加了console.log,以确认setTimeout没有运行。有人知道我做错了什么吗?

movieService.getMovie
如果返回您未订阅的可观察内容,则可能不会启动。这是因为从
HttpClient
返回的大部分可观察对象都是冷可观察对象,在订阅之前不会执行


另请参见

您应使用
终止您的陈述字符。示例:
this.messageService.add(“电影已成功添加!”)@Igor编号使用
不是强制性的-我从不使用them@messerbill看看这个@ADreNaLiNe DJ是的,这是真的,因此你是对的。但我总是在“框架给定结构”(如express和angular)中编写代码,所以我几乎从来没有遇到过这种情况!但是我忘了!非常感谢。我可以看到,如果返回一个您未订阅的可观察对象,则可能不会触发
movieService.getMovie
。我不明白如果在
setTimeout
的回调中添加
console.log
语句,它们将不会出现在浏览器中。您是否在
setTimeout
之前添加了一条log语句,并在
setTimeout
中添加了一条log语句,以查看是否至少出现了其中一条?