次のような10個の関数があります(データベースクエリ):
async loadEmails(){
this.emails = await (EmailEntity as any).findAll(this.where)
}
async loadUrls(){
this.urls = await (UrlEntity as any).findAll(this.where)
}
私はそれらすべてを次々と呼んでいます(10)。
実行をスピードアップしたい。
for(const i in toLoad){
let name = toLoad[i];
name = name.charAt(0).toUpperCase() + name.slice(1);
const exec = 'this.load' + name + '()';
await eval(exec)
}
並列化するための最良の方法は何await eval(exec)
ですか?
Promise.all?もしそうなら、どのように?
ありがとう
1. Promiseが解決されるまで待機してから、2。呼び出しを開始するため、foorループでawaitを使用しないでください。代わりに、各メソッドを呼び出しますが、まだ待機しないでください。すべての非同期呼び出しを開始した後(ループの後)、。を使用して一度にすべてのメソッドを待機しますPromise.all([Promise1, Promise2])
。
let promises = [];
for(const i in toLoad){
let name = toLoad[i];
name = name.charAt(0).toUpperCase() + name.slice(1);
const exec = 'this.load' + name + '()';
promise.push(eval(exec)); // store the promise
}
await Promise.all(promises);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加