0
httpリクエストライブラリgotを使用しています。このパッケージでは、http接続は非同期で、高速で、簡単に入力できます。 「got
」は、got
が私にとっていくつかの課題をもたらす有望なパッケージだということです。 1つは、got
への参照を回避する方法がわかりません。1回のコールバックで複数の約束を非同期にキューに入れて実行できますか?
私がする必要があるのは、ファイルストリームと一緒にgot
を使用していくつかのURLのページコンテンツをダウンロードすることです。 これらのストリームのすべてが完了したら、私はコード内で続行します。
約束事の配列を作る代わりに、私は応答オブジェクトの配列を取得しています。
// after all got's have executed
promises.all(promises).then(() => {
console.log('all promises resolved');
}
:
const getFile = (fileUrl) => {
return new Promise((resolve) => {
got.stream(fileUrl).pipe(fs.createWriteStream(path.basename(fileUrl)))
.on('finish',() => {
successMessage('downloaded ' + fileUrl + '!');
resolve();
});
});
};
// create an array of these got promises
let promises = []
for (let file of body.files) {
promises.push(getFile(file));
}
getFile
ヘルパーが存在する理由は、got
秒のすべてを実行した後、私はpromise.all
コールを使用できるように約束してgot
をラップすることですpromises.all
が予期したとおりに動作するように、最初のスニペットを変更する方法を理解する助けを求めています。
これは 'Promise.all(約束)'ですが、あなたのコードは動作するはずです。エラーは何ですか? – Bergi
あなたはちょうどバグBergiを発見したと思う。私は誰かがあなたのよく獲得したインターネットポイントを盗む前にその答えを投稿したいと思います! – Acey
@Bergiあなたは完全な応答として、それは私のために働いているとあなたはこの1つの正しい答えに値する投稿する必要があります。ありがとう! –