// 上述代码可以简化为 let fs = require('mz/fs'); let path = require('path'); async function guYan() { let name = await fs.readFile(path.resolve(__dirname, './name.txt'), 'utf-8'); name = './' + name; let age = await fs.readFile(path.resolve(__dirname, name), 'utf-8'); return age; } // async 函数执行后返回一个promise // 可以使用try + catch ,但如果使用try + catch 返回的就是真 guYan().then(data=>{ console.log(data); })
处理方案比较
1.callback 多个请求并发 不好管理 链式调用 导致回调嵌套过多
2.promise优点 可以优雅的处理异步 处理错误,基于回调的,还是会有嵌套问题
3.generator + co 让代码像同步(比如dva)不能支持try catch
4.async + await 可以是异步像同步一样处理,返回一个promise 支持try catch