這實際上是一個很簡單的問題-_-node
咱們如今都習慣了使用 promise
,可是仍是常常會碰到一些 callback
形式的 api
,那麼就把它們也改形成 promise
吧。api
以 node
中的 fs.readFile
爲例。promise
const fs = require('fs') const promisify = fn => { return function (path) { return new Promise((resolve, reject) => { fn.call(null, path, (err, data) => { if (err) { reject(err) } else { resolve(data) } }) }) } } const pReadFile = promisify(fs.readFile) pReadFile('./README.md') .then(data => { console.log(data.toString()) }) .catch(err => { console.log(err) }) async function test () { try { const data = await pReadFile('./README.md') console.log(data.toString()) } catch (err) { console.log(err) } } test()