# JavaScript中promisify怎么用
## 什么是promisify
`promisify`是將基于回調(Callback)的函數轉換為返回Promise的工具方法。在Node.js中,許多原生API(如`fs.readFile`)采用回調模式,而現代JavaScript更推薦使用Promise或Async/Await。通過`promisify`可以輕松實現這兩種模式的轉換。
## 基本用法
Node.js內置的`util.promisify`是最常用的實現:
```javascript
const util = require('util');
const fs = require('fs');
// 將回調式函數轉換為Promise版本
const readFilePromise = util.promisify(fs.readFile);
// 使用方式
readFilePromise('example.txt', 'utf8')
.then(data => console.log(data))
.catch(err => console.error(err));
如果需要手動實現或定制轉換邏輯:
function promisify(fn) {
return function(...args) {
return new Promise((resolve, reject) => {
fn(...args, (err, result) => {
if (err) reject(err);
else resolve(result);
});
});
};
}
// 使用示例
const customReadFile = promisify(fs.readFile);
if (err)
更簡潔
util.promisify.custom = (fn) => (...args) =>
new Promise((resolve) =>
fn(...args, (...results) => resolve(results)));
async function readFile() {
try {
const content = await readFilePromise('file.txt');
console.log(content);
} catch (err) {
console.error('讀取失敗:', err);
}
}
通過promisify
可以顯著提升代碼可讀性,特別是在復雜異步流程中能避免”回調地獄”。
“`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。