private Payload(): asset { 
    const payload = { //pay load }
    return payload; 
}
  
public listofnumbers() { 
    number = [1,2,3]; 
    number.forEach(element => { 
        this.service(element); 
    }); 
}
 
private service(number) {
    this.service.getNumbers(this.Payload())
        .subscribe((res) => { 
            if (res.isSuccess && res.data) { 
                this.function(); 
            } 
        }) 
} 

function () { alert("fghj"); }

Ketika layanan dipanggil alih-alih menjalankan panggilan HTTP terlebih dahulu, ia memanggil metode di dalam layanan. Tidak yakin apa yang harus dilakukan?

Menggunakan forkjoin

 public sendSelectedToD365() {
    let assetDetails1 = [];
      let assetSearchValue =(this.searchAssetForm.controls['assetSearch'].value).split(',');
      let mycalls = assetSearchValue.map(x => this.trying(x))
      forkJoin(mycalls).subscribe(res => {
        console.log(res)

      })
    }

  private trying(x)
      {     this.assetService.getAssetDetails(this.AssetDetailsPayload(x)).subscribe((res) => {
            if (res.isSuccess && res.data) {
              return res.data;
            }
        })
    }

Apa yang salah dengan ini? Saya menggunakan forkjoin tidak berfungsi seperti yang diharapkan

-1
Sanjana k 24 Mei 2021, 18:42

1 menjawab

Jawaban Terbaik

@Sanjana, "kunci" dari forkjoin adalah "bergabung" yang dapat diamati, jadi "mencoba" harus mengembalikan yang dapat diamati

  public sendSelectedToD365() {
      let assetDetails1 = [];
      let assetSearchValue =(this.searchAssetForm.controls['assetSearch'].value).split(',');
      let mycalls = assetSearchValue.map(x => this.trying(x))
      forkJoin(mycalls).subscribe(res:any[] => {
        console.log(res)
        // in res[0] you has the response to the first call
        // in res[1] you has the response to the second one
        // ...
        res.forEach((x,index)=>{
          console.log("The response to",assetSearchValue[index],"is ",res[index])
        })

      })
    }

  private trying(x):Observable<any>
  {         
       //see that you use return the Observable
         return this.assetService.getAssetDetails(this.AssetDetailsPayload(x))
  }
1
Eliseo 25 Mei 2021, 07:18