各配列アイテムのPromiseを `Promise.all()`に追加します

0
投票

次のコードがあり、名前のリストを繰り返し処理し、各名前を使用してこの場合はそれぞれの家をフェッチします。これは問題なく機能しますが、CADE-0へのすべての約束を含めたいと思います| -各名前のPromiseをPromise.all()に動的に追加するにはどうすればよいですか?ここでのグッドプラクティスは何ですか?

次のコードを使用して、名前のリストを反復処理し、各名前を使用して、この場合はそれぞれの家をフェッチします。これは正常に機能しますが、Promise.all() Promise.all()にすべてのPromiseを含めたいと思います-各名前のPromiseをPromise.all() Promise.all()に動的に追加するにはどうすればよいですか?ここでのグッドプラクティスは何ですか?
list=[
  'Name1',
  'Name2',
  'Name3'
];

this.houses=new BehaviorSubject<any>([]);

const promises=this.greatHouses.map(name=> {
  let house;
  return this.fetchHouse(name).then((result: any[])=> {
    house=result[0];
    return result[0];
  }).then((result: any)=> {
    return this.fetchLord(result.currentLord);
  }).then((result: any)=> {
    const currentLord=Characters.default.find(char=> char.characterName===result.name);
    return [{...house, currentLord}];
  });
});

Promise.all(promises).then(values=> {
  console.log(values);
});

fetchHouse(name: string) {
  return this.http.get(`${this.housesUrl}`, {
    params: {
      name
    }
  }).toPromise();
}

fetchLord(url: string) {
  return this.http.get(url).toPromise();
}
list=[ 'Name1', 'Name2', 'Name3' ]; this.houses=new BehaviorSubject<any>([]); const promises=this.greatHouses.map(name=> { let house; return this.fetchHouse(name).then((result: any[])=> { house=result[0]; return result[0]; }).then((result: any)=> { return this.fetchLord(result.currentLord); }).then((result: any)=> { const currentLord=Characters.default.find(char=> char.characterName===result.name); return [{...house, currentLord}]; }); }); Promise.all(promises).then(values=> { console.log(values); }); fetchHouse(name: string) { return this.http.get(`${this.housesUrl}`, { params: { name } }).toPromise(); } fetchLord(url: string) { return this.http.get(url).toPromise(); } list=[ 'Name1'、 'Name2'、 「Name3」 ]; this.houses=new BehaviorSubject([]); const promises=this.greatHouses.map(name=>{ 家にしましょう。 this.fetchHouse(name).then((result:any[])=>{を返します ハウス=結果[0]; 結果を返す[0]; })。then((result:any)=>{ this.fetchLord(result.currentLord);を返します。 })。then((result:any)=>{ const currentLord=Characters.default.find(char=>char.characterName===result.name); return[{... house、currentLord}]; }); }); Promise.all(promises).then(values=>{ console.log(values); }); fetchHouse(name:string){ this.http.get( `${this.housesUrl}`、{を返す params:{ 名前 } })。お約束します(); } fetchLord(url:string){ this.http.get(url).toPromise();を返します。 }

ソース

promise javascript typescript angular rxjs

1 -Bergi

1 -Jaromanda X

1 -Bergi

-Tom

-Bergi

-Tom

1 -Bergi

-Tom

1 -Bergi

1 答える
0
投票

Promiseはまったく使用しないでください。 AngularとそのHttpClientを使用している場合にのみ、Observablesを操作します。

プリコード-0|
ソース

興味があるかもしれません

© 2021   KonnichiwaSekai.Com