javascript - setTimeout 在 Angular 5 中不起作用

标签 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.movi​​eService(title, year)调用结束编辑)。好吧,显示了消息,但 setTimeout 函数中没有任何内容运行。我什至在 setTimeout 之前和之内添加了 console.log,以确认它的 setTimeout 没有运行。有人知道我做错了什么吗?

最佳答案

movieService.getMovie 如果返回一个您未订阅的可观察对象,则可能不会触发。这是因为从 HttpClient 返回的大多数 Observables 都是冷的 observables,它们在被订阅之前不会执行。

另见 HttpClient - Always subscribe

关于javascript - setTimeout 在 Angular 5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071005/

相关文章:

javascript - 为什么不能在普通函数或全局范围内使用await

Angular2/Ionic2 在哪里定义全局变量?

angular - 如何在不重复存储对象的情况下在多个状态模型之间进行交互 - NGXS

javascript - iOS Phonegap 使用手势滑动检测

javascript - 使用/不使用 jquery 声明 javascript 数组

javascript - Javascript 中的 while 与 setTimeout

javascript - 添加新的 Web 组件时的线程问题

javascript - 使用 apply() 执行带有 args 的 setTimeouts 数组

正则表达式 : how to remove string before > and including >

angular - 此构造函数与 Angular 依赖注入(inject)不兼容,因为它在参数列表索引 0 处的依赖无效