Observable:检查返回值是否为空
Observable: Checking if returned value is empty or not
我想做的事情:
如果有匹配的日期,我正在检查数据库。如果有匹配项,它将被发回。
我使用 GET 请求执行此操作。
在我的 .ts class 然后我想看看返回值是否为空。
这是我的代码:
推荐-section.service.ts
checkRetValue(recommendedSection: RecommendedSection): boolean{
var checkNumber = this.checkOverlappingDates(recommendedSection);
}
async checkOverlappingDates (recommendedSection: RecommendedSection) {
var copy = this.convert(recommendedSection);
var localeArray = [];
recommendedSection.recommendedSectionNames.forEach( (rsn) => {
localeArray.push(rsn.locale.id);
});
await this.activeFromActiveToQuery({
active_from: copy.activeFrom,
active_to: copy.activeTo,
locale_ids: localeArray
}).subscribe((data) => {
var retNumber;
if (data.json == "") {
retNumber = 1;
} else {
retNumber = 0;
}
return retNumber;
}), (res: ResponseWrapper) => this.onError(res.json);
}
activeFromActiveToQuery(req?: any): Observable<ResponseWrapper>{
const options = createRequestOption(req);
options.params.append("active_from", req.active_from);
options.params.append("active_to", req.active_to);
options.params.append("locale_ids", req.locale_ids);
return this.http.get(this.resourceActiveFromActiveToURL, options)
.map(res => {
return res.json();
});
}
我的问题:
是否可以将 retNumber
返回给函数 checkRetValue
?
我尝试了很多建议,但找不到适合我的建议。
您可以在管道中使用 map 方法来转换结果,然后 return 使用的 observable 将解析为数字。
在尝试了很多不同的解决方案后,这对我有用:
async checkOverlappingDates(recommendedSection: RecommendedSection) {
var copy = this.convert(recommendedSection);
var localeArray = [];
recommendedSection.recommendedSectionNames.forEach((rsn) => { localeArray.push(rsn.locale.id); });
var tester = await this.activeFromActiveToQuery({
active_from: copy.activeFrom,
active_to: copy.activeTo,
locale_ids: localeArray
}).first().toPromise();
我没有使用 subscribe() 方法,而是使用了 .first().toPromise()
.
这可能不是最佳答案,但目前它工作正常。
我想做的事情:
如果有匹配的日期,我正在检查数据库。如果有匹配项,它将被发回。 我使用 GET 请求执行此操作。
在我的 .ts class 然后我想看看返回值是否为空。
这是我的代码:
推荐-section.service.ts
checkRetValue(recommendedSection: RecommendedSection): boolean{
var checkNumber = this.checkOverlappingDates(recommendedSection);
}
async checkOverlappingDates (recommendedSection: RecommendedSection) {
var copy = this.convert(recommendedSection);
var localeArray = [];
recommendedSection.recommendedSectionNames.forEach( (rsn) => {
localeArray.push(rsn.locale.id);
});
await this.activeFromActiveToQuery({
active_from: copy.activeFrom,
active_to: copy.activeTo,
locale_ids: localeArray
}).subscribe((data) => {
var retNumber;
if (data.json == "") {
retNumber = 1;
} else {
retNumber = 0;
}
return retNumber;
}), (res: ResponseWrapper) => this.onError(res.json);
}
activeFromActiveToQuery(req?: any): Observable<ResponseWrapper>{
const options = createRequestOption(req);
options.params.append("active_from", req.active_from);
options.params.append("active_to", req.active_to);
options.params.append("locale_ids", req.locale_ids);
return this.http.get(this.resourceActiveFromActiveToURL, options)
.map(res => {
return res.json();
});
}
我的问题:
是否可以将 retNumber
返回给函数 checkRetValue
?
我尝试了很多建议,但找不到适合我的建议。
您可以在管道中使用 map 方法来转换结果,然后 return 使用的 observable 将解析为数字。
在尝试了很多不同的解决方案后,这对我有用:
async checkOverlappingDates(recommendedSection: RecommendedSection) {
var copy = this.convert(recommendedSection);
var localeArray = [];
recommendedSection.recommendedSectionNames.forEach((rsn) => { localeArray.push(rsn.locale.id); });
var tester = await this.activeFromActiveToQuery({
active_from: copy.activeFrom,
active_to: copy.activeTo,
locale_ids: localeArray
}).first().toPromise();
我没有使用 subscribe() 方法,而是使用了 .first().toPromise()
.
这可能不是最佳答案,但目前它工作正常。