回调地狱 promisify

对于复杂的场景,都是一个回调里面调另一个回调,这个回调里面又套另一个回调,这样就形成了回调地狱,代码量比较大,无法读了,这时要怎么办呢

node 8可以写异步像写同步一样;

readFile怎么改成类似同步的书写

const fs= require('fs');

//采用promisify,而不是通过回调同步返回值或传递结果,我们可以返回一个Promise,我们将来会返回一些值或错误。promisify就是把回调函数的第一个参数是error的这种类型的方法变成为一个promisify函数

const promisify=require('util').promisify;

//readFile是异步的函数,第一个参数是路径,第二个是参数是回调函数,可以把这种函数定义为promisify函数

const read = promisify(fs.readFile);

// read('./35_fs_promisify.js')

// .then(data=>{

// console.log(data.toString());

// })

// .catch( ex => {

// console.log(ex);

// })

async function test() {

//,调用read方法,因为采取的是同步,所以用变量表示

try{

const content = await read('./35_fs_promisify.js');

console.log(content.toString());

} catch(ex){

console.log(ex);

}

}

test();

文件内容就被读出来了

猜你喜欢

转载自blog.csdn.net/qq_41153478/article/details/81625156