Node.jsで実行してください。
const fs = require('fs');
function writeFile(fileName, data) {
return new Promise((onFulfilled, onRejected) => {
fs.writeFile(fileName, data, err=>{
err ? onRejected(err) : onFulfilled('OK');
}); });
}
function readFile(fileName) {
return new Promise((onFulfilled, onRejected) => {
const period = Math.random()*1000;
console.log(`${fileName}: ${period}`);
setTimeout(() => {
fs.readFile(fileName, "utf-8", (err, data) => {
err ? onRejected(err) : onFulfilled([fileName, data]);
}); /* fs.readFile */
}, period); /* setTimeout */
}); /* Promise */
}
/* 3つのファイルの読み込みを同時に行い、最初に返ってきたものを採用 */
let selected;
Promise.race([readFile("a.txt"), readFile("b.txt"), readFile("c.txt")])
.then(function(results) {
selected = results[0];
return writeFile("d.txt", results[1]);
})
.then(function(mes) {
console.log(`ファイル${selected}の内容が書き込まれました。\n----`);
})
.catch(err => {
console.error("エラーが起こりました:" + err);
});