Asynchronous RxJS-Observable.map使用异步初始化生成对象

Asynchronous RxJS-Observable.map使用异步初始化生成对象,asynchronous,rxjs,Asynchronous,Rxjs,} 所以我想在异步对象初始化结束时订阅这段可观察的第一段代码,而不是像本例中创建对象时订阅这段代码 谢谢我建议在实现类中添加对从图像加载事件创建的可观察对象的引用 差不多 export class Actualite { Credit: string; Mini: string; /* ... */ constructor(fichier:any) { this.Credit = fichier.Credit || ''; this.Mini =

}

所以我想在异步对象初始化结束时订阅这段可观察的第一段代码,而不是像本例中创建对象时订阅这段代码


谢谢

我建议在
实现
类中添加对从图像加载事件创建的可观察对象的引用

差不多

export class Actualite {
Credit: string;
Mini: string;
/* ... */


constructor(fichier:any) {
    this.Credit =       fichier.Credit || '';
    this.Mini =         fichier.Mini || '';
    /* ... */


    if(this.Mini) {
        let img:HTMLImageElement = new Image();
        img.src = this.Mini;

        img.addEventListener('load', ()=> {

            let canvas:HTMLCanvasElement = document.createElement('canvas');
            canvas.width = img.width;
            canvas.height = img.height;
            let ctx:CanvasRenderingContext2D = canvas.getContext('2d');

            /*....... Image transformation......*/

            this.Data = canvas.toDataURL();


        })
    }
}
现在你可以从外部观察到这个

constructor(fichier:any) {
    /*...*/
    this.loadObservable = Rx.Observable.empty() // case where `Mini` is false
    // you can also return a Rx.Observable.of(defaultValue) if you need something on the other side

    if (this.Mini) {
        let img:HTMLImageElement = new Image();
        img.src = this.Mini;

        this.loadObservable = Rx.Observable
          .fromEvent(img, "load")
          .map(event => /*... do you stuff with the image ...*/)
    }
}
返回此.http.get(url)
.map((响应:响应)=>{
返回(response.json())
.map(actu=>新实现(actu))
.mergeMap(actu=>actu.loadObservable);//当loadObservable发出
});

我建议在
实现
类中添加对从图像加载事件创建的可观察对象的引用

差不多

export class Actualite {
Credit: string;
Mini: string;
/* ... */


constructor(fichier:any) {
    this.Credit =       fichier.Credit || '';
    this.Mini =         fichier.Mini || '';
    /* ... */


    if(this.Mini) {
        let img:HTMLImageElement = new Image();
        img.src = this.Mini;

        img.addEventListener('load', ()=> {

            let canvas:HTMLCanvasElement = document.createElement('canvas');
            canvas.width = img.width;
            canvas.height = img.height;
            let ctx:CanvasRenderingContext2D = canvas.getContext('2d');

            /*....... Image transformation......*/

            this.Data = canvas.toDataURL();


        })
    }
}
现在你可以从外部观察到这个

constructor(fichier:any) {
    /*...*/
    this.loadObservable = Rx.Observable.empty() // case where `Mini` is false
    // you can also return a Rx.Observable.of(defaultValue) if you need something on the other side

    if (this.Mini) {
        let img:HTMLImageElement = new Image();
        img.src = this.Mini;

        this.loadObservable = Rx.Observable
          .fromEvent(img, "load")
          .map(event => /*... do you stuff with the image ...*/)
    }
}
返回此.http.get(url)
.map((响应:响应)=>{
返回(response.json())
.map(actu=>新实现(actu))
.mergeMap(actu=>actu.loadObservable);//当loadObservable发出
});