Javascript 等待API在中完成
在Angular中,是否有人知道一种简单的方法,可以让我的组件等待几秒钟,以确保对Javascript 等待API在中完成,javascript,angular,typescript,api,Javascript,Angular,Typescript,Api,在Angular中,是否有人知道一种简单的方法,可以让我的组件等待几秒钟,以确保对暂停服务.PostMoratoriumLocationsArray()方法的调用在navigateByUrl()启动路由器之前完成。代码如下。如有任何建议,将不胜感激--杰森 postmoratiumlocationsarray(moraID:any,moratiumlocationsarray:moratiumlocation[]):可见{ 此.moraID.moratiumlocationsarray(mora
暂停服务.PostMoratoriumLocationsArray()方法的调用在navigateByUrl()启动路由器之前完成。代码如下。如有任何建议,将不胜感激--杰森
postmoratiumlocationsarray(moraID:any,moratiumlocationsarray:moratiumlocation[]):可见{
此.moraID.moratiumlocationsarray(moraID,moratiumlocationsarray)
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe((数据)=>(此.molatoriumid)=(数据),
(错误)=>(console.log(错误)),
()=>console.log(“暂停的暂停后位置已完成”),
);
这个.router.navigateByUrl('activemortations');
归还(本暂停令);
}
这是一个异步函数,您可能不知道服务器响应的时间有多长。你应该
试试下面的代码
PostMoratoriumLocationsArray(moraID: any, moratoriumLocationsarray: MoratoriumLocation[]): Observable<any> {
var subject = new Subject<string>();
this.moratoriumService.PostMoratoriumLocationsArray(moraID, moratoriumLocationsarray)
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe((data) => {
(this.moratoriumID) = (data);
this.router.navigateByUrl('ActiveMoratoriums');
subject.next(data);
},
(error) => (console.log(error)),
() => console.log('Post moratorium location for moratorium is complete'),
);
return subject.asObservable();
}
postmoratiumlocationsarray(moraID:any,moratiumlocationsarray:moratiumlocation[]):可见{
var subject=新的subject();
此.moraID.moratiumlocationsarray(moraID,moratiumlocationsarray)
.pipe(takeUntil(this.ngUnsubscribe))
.订阅((数据)=>{
(本暂停令)=(数据);
这个.router.navigateByUrl('activemortations');
主题。下一步(数据);
},
(错误)=>(console.log(错误)),
()=>console.log(“暂停的暂停后位置已完成”),
);
返回subject.asObservable();
}
取而代之的是建立在管道内部的可观察的基础上,让调用者订阅怎么样?像这样
PostMoratoriumLocationsArray(moraID: any, moratoriumLocationsarray: MoratoriumLocation[]): Observable<any> {
return this.moratoriumService.PostMoratoriumLocationsArray(moraID, moratoriumLocationsarray)
.pipe(takeUntil(this.ngUnsubscribe),
tap(data =>
{
this.moratoriumID = data
this.router.navigateByUrl('ActiveMoratoriums');
},
error => console.log(error),
() => console.log('Post moratorium location for moratorium is complete'),
));
}
postmoratiumlocationsarray(moraID:any,moratiumlocationsarray:moratiumlocation[]):可见{
返回此.MOLATIUMSERVICE.POSTREATIUMLOCATIONSARRAY(moraID,MOLATIUMLOCATIONSARRAY)
.pipe(takeUntil(此.ngUnsubscribe),
点击(数据=>
{
this.molatoriumid=数据
这个.router.navigateByUrl('activemortations');
},
error=>console.log(错误),
()=>console.log(“暂停的暂停后位置已完成”),
));
}
当您调用该方法时,您可以执行以下操作:this.PostMoratoriumLocationsArray(…).subscribe()
将navigateByUrl语句移动到observable的完整处理程序应该执行此操作,您只需在管道中添加轻触
,并跳过subscribe@pc_coder-谢谢你,这似乎奏效了。还是个新手。那么在这种情况下,主体似乎或多或少地消耗了数据--杰森
PostMoratoriumLocationsArray(moraID: any, moratoriumLocationsarray: MoratoriumLocation[]): Observable<any> {
return this.moratoriumService.PostMoratoriumLocationsArray(moraID, moratoriumLocationsarray)
.pipe(takeUntil(this.ngUnsubscribe),
tap(data =>
{
this.moratoriumID = data
this.router.navigateByUrl('ActiveMoratoriums');
},
error => console.log(error),
() => console.log('Post moratorium location for moratorium is complete'),
));
}