面对下面回调,你面对这样代码,你心里难道不百万只羊驼吗?
nodejs 提供了util.promisify方法,来解决这类问题。(类似es6 种是提供了Promise的方法)。
const fs = require('fs');
const promisify = require('util').promisify;
const read = promisify(fs.readFile);
read('./source1.js').then(data=>{
console.log(data.toString());
}).catch(err => {
console.error(`Error: ${err}`);
});
上面这种形式,看上去利用链式条用,代码也是不怎么观感 。这里可以利用async
和await
做法来解决。
async function test() {
const content = await read('./source.js');
console.log(content.toString());
}
test();
对于错误的处理,可以用try {} catch(err){}
来处理。
async function test() {
try {
const content = await read('./source.js');
console.log(content.toString());
// 对于错误,交给catch处理
} catch (err) {
console.log(err);
}
}
test();