Promises API là các api của nodejs trả về một promise. Ở các phiên bản trước mình phải viết lại thành promise cho các hàm callback có sẵn (VD: readFile, writeFile,…) hoặc ultil.promisify để chạy các hàm bất đồng bộ theo kiểu promise.
- Sử dụng Promise chuyển callback sang promise
const fs = require('fs');
const path = require('path');
function readFilePromise(path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) =>{
if(err) reject(err);
resolve(data);
});
})
}
(async () => {
const content = await readFilePromise(path.join(__dirname, 'file.txt'));
console.log(content.toString());
})()
- Sử dụng ultil.promisify để chuyển callback sang promise
const fs = require('fs');
const path = require('path');
const util = require('util');
const readFilePromise = util.promisify(fs.readFile);
(async () => {
const content = await readFilePromise(path.join(__dirname, 'file.txt'));
console.log(content.toString()); //Hello codeq.dev
})()
Với Promises API bạn không cần phải có thêm các code để chuyển đổi thành promise. Ví dụ trên sẽ viết lại đơn giản như sau:
const path = require('path');
const fsPromise = require('fs').promises;
// or
// const fsPromise = require('fs/promises');
(async () => {
const content = await fsPromise.readFile(path.join(__dirname, 'file.txt'));
console.log(content.toString()); //Hello codeq.dev
})()
Rất đơn giản phải không chúc các bạn thành công. Không thành công cũng thành ...thụ.