Promise非同期読み込みファイルのカプセル化

721 ワード

//       a、b、c       
const fs = require('fs');

//       ,        
let read = (path) => {
    return new Promise((resolve, reject) => {
        fs.readFile(path, 'utf-8', (err, data) => {
            err ? reject(err) : resolve(data);
        });
    });
}

//         
//     ,         ,     Promise   
read('./a.txt')
.then((data) => {
    console.log(data);
    return read('./b.txt');
})
.then((data) => {
    console.log(data);
    return read('./c.txt');
})
.then(data => {
    console.log(data);
})
.catch(err => {
    console.log(err);
});

// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
// bbbbbbbbbbbbbbbbbbbbbb
// cccc