.thenは関数ではありません任意の値が
無視
全くで、機能を期待印刷することが期待さ
ただし、還元コールバックのprom
は約束ですので、最初の約束が待たれます
単純な変更、マークEDは以下の約束がすべてほぼ同時に開始されることが、物事に
function timeout(delay) {
return new Promise((resolve, reject) => {
setTimeout(resolve, delay);
});
}
function printDots(delays) {
return delays.map((delay) => {
return timeout(delay).then(() => process.stdout.write('.'))
}).reduce((acc, prom) => acc.then(() => prom));
// ^^^^^^
}
printDots([513, 3402, 1337, 4122]).then(() => process.stdout.write('DONE!'));
注意を修正する必要があり、0のための待ち時間は、この、間違いなくより良い解決策与えられた1つの開始など
前に終了しないようにprintDotsのコメントを1としてPromise.all
function printDots(delays) {
return Promise.all(delays.map((delay) => timeout(delay).then(() => process.stdout.write('.'))));
}
を使用することで、約束を順次実行する必要がある - それが唯一の
を減らす使用するのと同じくらい簡単ですこの場合、
function timeout(delay) {
return new Promise((resolve, reject) => {
setTimeout(resolve, delay);
});
}
function printDots(delays) {
return delays.reduce((acc, delay) => acc.then(() => timeout(delay).then(() => process.stdout.write('.'))), Promise.resolve());
}
printDots([513, 3402, 1337, 4122]).then(() => process.stdout.write('DONE!'));
、あなたは最初の繰り返しが、それ以降のすべてのもののような約束と連携しているので、減らすために、最初の約束(Promise.resolve)を提供する必要が働い
あり、およびマーキング素敵なタッチです!ありがとう。 –
さて、まだ間違った順序で起こっています。 [this](https://repl.it/Eq9z/1) – 4castle
を参照してください。1行に6文字の変更を加えると、時々見つけにくくなる場合があります。p –