gpt4 book ai didi

javascript - 从 observable 内部返回

转载 作者:行者123 更新时间:2023-11-30 14:55:43 24 4
gpt4 key购买 nike

我认为从根本上说我做错了什么。我试图通过从筛选列表中拉出一个实体来找到它,如果那里没有实体,我需要创建一个实体。

我觉得这个函数是错误的,因为我应该返回一个 observable 而不是返回任何东西

getOrCreateNew(receiverId: number) : Observable<Conversation> {
var userId = this.identity.userInfo.id;

//TODO: you should be using an expression here, and having a builder for generating your
//filters in case you want to switch them in the future
var employerFilter = new PropertyFilterNode("EmployerUserId", FilterCondition.Equal, receiverId.toString());
var employeeFilter = new PropertyFilterNode("EmployeeUserId", FilterCondition.Equal, userId.toString());
let conversationFilter = new BinaryFilterNode(employerFilter, employeeFilter, Combiner.Or);

this.getList(conversationFilter).subscribe(entities => {
if (entities == null || entities.length == 0) {
let conversation: Conversation;
conversation.employerUserId = receiverId;
conversation.employeeUserId = userId;
return this.create(conversation);
}
else {
let entity = entities[0];
return Observable.of(entity); //.Return(entity)
}
});

return null;
}

如何返回从订阅内部返回的可观察对象?

最佳答案

getList 订阅的工作方式表明它应该是 mergeMapswitchMap(考虑到 create也返回一个可观察对象):

return this.getList(conversationFilter).mergeMap(entities => {
if (entities == null || entities.length == 0) {
let conversation: Conversation;
conversation.employerUserId = receiverId;
conversation.employeeUserId = userId;
return this.create(conversation);
}
else {
let entity = entities[0];
return Observable.of(entity); //.Return(entity)
}
});

在这种情况下,应该订阅从 getOrCreateNew 返回的 observable 以便发出值,因为它没有在内部订阅。

关于javascript - 从 observable 内部返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299102/

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