Javascript 异步操作完成
我正在使用第三方库()执行图像大小调整。 该库提供了不同的功能来执行图像大小调整,例如 调整大小, 收成, 调整作物的大小 上述函数是异步操作 例如Javascript 异步操作完成,javascript,angular,typescript,asynchronous,Javascript,Angular,Typescript,Asynchronous,我正在使用第三方库()执行图像大小调整。 该库提供了不同的功能来执行图像大小调整,例如 调整大小, 收成, 调整作物的大小 上述函数是异步操作 例如 resizeImage(files:any, width:number, height:number){ return this.ng2ImgToolsService.resize(files, width, height) .map((result:any) => result) .catch((error:any
resizeImage(files:any, width:number, height:number){
return this.ng2ImgToolsService.resize(files, width, height)
.map((result:any) => result)
.catch((error:any) => error);
}
//For Thumbnails
resizeExactCrop(files:any, width:number, height:number){
return this.ng2ImgToolsService.resizeExactCrop(files, width, height)
.map((result:any) => result)
.catch((error:any) => error);
}
我调用以上两个函数来调整图像的大小
resizeImages(){
this.resizeImage([img1],400,400).subscribe(data => {
console.log("Resized Image is "+data); //1st finished
},
error => console.log("Resizing Image Failed", error));
this.resizeExactCrop([img1],100,100).subscribe(data => {
console.log("Cropped Image is "+data); //2nd finished
},
error => console.log("Resizing Image Failed", error));
}
当resizeImages
中的上述两个操作完成时,我需要执行一个操作。如何跟踪这两个操作是否已完成。我使用计数器跟踪异步操作的完成。是否有任何方法可以有效地跟踪完成情况。您可以使用函数-当所有可观察对象完成时,发出其最后的值。你可以写
Observable.forkJoin(
this.resizeImage([img1],400,400),
this.resizeExactCrop([img1],100,100)
).subscribe(values => ...)
代码示例。可观测订阅仅在所有可观测项完成时工作(其中一项工作延迟2秒)
const Observable=Rx.Observable;
console.log('Start');
可观察的分叉连接(
在第(4)项中可观察到,
可观察的延迟(2000年)
).subscribe(值=>console.log(值))代码>
我尝试了forkJoin,但在subscribe中没有调用“值”。我需要返回“resizeImage”和“resizeExactCrop”中的任何内容吗?是的。我可以单独打电话得到结果。我想这对你会有用的。尝试以某种方式使用此示例代码。当我使用第一个值时,我能够在订阅中获得值。例如,这个.resizeImage([img1],400400)。首先()这里讨论: