Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步操作完成_Javascript_Angular_Typescript_Asynchronous - Fatal编程技术网

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)。首先()这里讨论: