我很确定这是一个愚蠢的问题,这就是为什么我找不到答案(或者至少我希望这是一个快速回答的愚蠢问题)。由于某种原因,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 没有运行。有人知道我做错了什么吗?
最佳答案
movieService.getMovie
如果返回一个您未订阅的可观察对象,则可能不会触发。这是因为从 HttpClient
返回的大多数 Observables 都是冷的 observables,它们在被订阅之前不会执行。
关于javascript - setTimeout 在 Angular 5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071005/