gpt4 book ai didi

javascript - RxJS 主题从未推送过第一个下一个

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:05 25 4
gpt4 key购买 nike

我在主题和评论系统方面遇到了问题,我正在构建。它工作正常,但发布的第一条评论永远不会显示,直到有人发布另一条评论,此后所有其他评论都工作正常。我尝试过使用 BehaviourSubject 给出 null 或“”和 ReplaySubject 的初始值,但我认为我可能会遗漏这些工作方式的一些内容,无论如何,是否可以实时进行这项工作,即当用户推送评论时,它会发送到服务器并添加回堆栈,而无需立即提交第二条评论?

import { Injectable } from '@angular/core';
import { Observable } from "rxjs/Observable"
import { BehaviorSubject } from "rxjs/BehaviorSubject"
// import {Subject} from "rxjs/Subject"
import { ServerAPI } from '../serverapi';
import { ReplaySubject } from 'rxjs/internal/ReplaySubject';
import { Subject } from 'rxjs/Subject';

@Injectable({
providedIn: 'root'
})
export class Comments {
private _comments = new Subject<any[]>();
$comments: Observable<any> = this._comments.asObservable();

constructor(private api: ServerAPI) {
this.$comments.subscribe(() => {
console.log('comments sub\'d');
});
}

async comment(threadID: string, commentData: any): Promise<any> {
await this.api.postComment(threadID, commentData);
const fetchComments = await this.api.getComments(threadID);
this._comments.next(fetchComments);
}
}

在我的模板中,我通过订阅 li 收到了评论

this.comment.$comments.subscribe(chats => {
this.CommentData = chats;
});

最佳答案

您需要有一个功能来订阅这样的主题

getData() {
return this._comments.asObservable();
}

这就是您在组件中订阅 getData() 的方式

this.service.getData().subscribe(x=> {
console.log(x);
});

同样在构造函数中订阅,就像您现在所做的那样,只会执行一个

constructor(private api: ServerAPI) {
this.$comments.subscribe(() => {
console.log('comments sub\'d');
});
}

关于javascript - RxJS 主题从未推送过第一个下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com