我想从observable中返回此方法的值,以便通过将其分配给viewcount变量在另一个函数中使用它。 我如何正确地从observable返回值并将其分配给公共变量以供以后使用。
public viewcount:any
public getcount(id){
let view = " ";
this.backandService.getViews(id).subscribe(
(data:any) =>{
view = data["0"].views
console.log(view)
}
);
return view;
}
现在用我做的另一种方法
public updateViews(id){
let view:any = this.viewcount;
this.backandService.update('videos',id,
{"viewcount":JSON.stringify(view)}).subscribe(
data =>{
console.log (data);
}
);
}
但永远不会返回该值,以便在updateView
方法和控制台日志中使用它,updateView
xhr requests
仅显示未找到的404 request payload
{{1}}标题中的1}}显示一个空括号。
答案 0 :(得分:1)
因为您要将值分配给模块级变量,所以您不能将该变量设为数字,但它本身需要是一个承诺。
public viewCount: Promise<number>;
public requestCount(id){
this.viewCount = new Promise<number>((resolve,reject) => {
this.backandService.getViews(id).subscribe(
(data:any) =>{
let view = data["0"].views;
console.log(view);
resolve(view);
});
});
}
public async updateViews(id): Promise<void>{
let view = await this.viewcount;
this.backandService.update('videos',id {
"viewcount":JSON.stringify(view)}).subscribe(data =>{
console.log (data);
});
});
}
非异步方法:
public updateViews(id): Promise<void>{
return this.viewcount.then(view => (
this.backandService.update('videos',id {
"viewcount":JSON.stringify(view)}).subscribe(data =>{
console.log (data);
});
});
})'
}