CanActivate:带有套接字监听器的可观察布尔值

CanActivate: Observable Boolean with Socket listener

我正在尝试从服务器的套接字中获取一个 属性,就像这样

isVerified() {
    this.socket.emit('verify');

    return new Observable<boolean>(observer => {
        this.socket.on('isVerified', data => {
            observer.next(data)
            observer.complete()
        })
    })
}

数据会 return true 或 false 所以在我的路由守卫中我有这个

canActivate(): Observable<boolean> {
    this._chat.isVerified()
        .subscribe(
            res => {
                return res
            },
            err => console.log(err)
        )
}

但它告诉我 "A function whose declared type is neither 'void' nor 'any' must return a value." 我一直在绞尽脑汁想弄清楚如何使这项工作有效,但我已经阅读了很多其他问题但无济于事。控制台日志记录 res 确实给了我 true 或 false。

canActivate return 类型是 Observable |承诺 |布尔值

所以你应该 return 在你的情况下观察到:

canActivate(): Observable<boolean> {
    this._chat.isVerified();
}