codeQ Blog

Chào mừng mọi người đã đến với codeQ Blog

Nodejs Promises API là gì?

Đăng vào ngày
Cover Image for Nodejs Promises API là gì?

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ụ.