0
ここでの関数は、たくさんのファイルを作成しますが、それらに書き込むことはありません。いつか最後にPromise.all
を削除しても、その機能を完全に解決しないと、ファイルにデータが書き込まれます。私が何を書こうとしているのかは関係ありません。私はすべてをコメントにして、「こんにちは世界」と書くだけで、それでも何も書きません。質問は簡単です、なぜですか?ストリームが実際に完了した約束事でファイルに書き込む
const writeSmilFiles = (smilInfo) => {
return new Promise ((resolve, reject) => {
const p1 = smilPartOne();
const p2 = smilPartTwo();
let promises = dataTypes.new.camera_set.map(instance => {
return new Promise((resolve, reject) => {
const smilEntries = smilInfo.filter(smil => smil.BroadcastAndKlippTupleId == instance.BroadcastAndKlippTupleId && smil.CameraId == instance.CameraId);
try {
const fileName = `${__dirname}/newSmilFiles/${smilEntries[0].Smil}`;
const file = fs.createWriteStream(fileName);
file.write(p1);
smilEntries.forEach(entry => {
const smilEntry = smilSwitch(entry.Filename, entry.Bitrate, entry.Width, entry.Height);
file.write(smilEntry);
console.log(smilEntry);
file.write('\n');
});
file.write(p2);
file.end();
resolve(`Smil written.`);
} catch (ex) {
reject(ex);
}
});
});
Promise.all(promises).then(msg => {
resolve(msg);
});
});
};
は、あなたが同様にあなたの質問に、簡略化された「Hello World」のバージョンを提供していただけますか?単純化されたバージョンをデバッグする方が簡単かもしれません。 –
これはあなたの問題の原因ではありませんが、 'return Promise.all(...)'を使用して、あなた自身を作成している余分な約束事には入れないでください。あなたがしていることは、約束どおりの反パターンであり、実際には、あなたの約束が拒否された場合のプログラミングエラーです。 – jfriend00
@ jfriend00ありがとう、すばらしいヒント。私はこれについて実際には疑問に思っていました - 今は意味があります! :) –