Promise Promise是一个容器,保存异步代码的执行结果; 作用:解决异步回调地域(异步代码,层层嵌套); 缺陷:语法、编码上还是存在嵌套现象 const fs = require('fs') function createPromise(name){ return new Promise((resolve, reject) => { fs.readFile(`${__dirname}/${name}.txt`,'UTF-8', (error, data)=>{ if(data){ resolve(data) }else{ reject(error) } }) }) } createPromise("a").then(data=>{ console.log(data) return createPromise("b") }).then(data=>{ console.log(data) return createPromise("c") }).then(data=>{ console.log(data) return createPromise("d") }).then(data=>{ console.log(data) }).catch(error=>{ console.log(error) }) try-catch-finally 作用: 让开发者的代码更加健壮 注意: catch 和 finally 语句都是可选的,但必须至少使用一个。 语法: try { tryCode - 尝试执行代码块 } catch(err) { catchCode - 捕获错误的代码块 } finally { finallyCode - 无论 try / catch 结果如何都会执行的代码块 } async-await async本身不起作用,仅仅是函数的修饰符, 但是只有用了async的函数, 才能在函数体中使用await来执行promise; const fs = require('fs') function createPromise (name) { return new Promise((resolve, reject) => { fs.readFile(`${__dirname}/${name}.txt`, 'UTF8', (error, data) => { if (data) { resolve(data) } else { reject(error) } }) }) } async function readFile () { try { let res1 = await createPromise('a') console.log(res1) let res2 = await createPromise('b') console.log(res2) let res3 = await createPromise('c') console.log(res3) } catch (error) { console.log(error) } } readFile() 扩展阅读 错误处理机制 Promise 对象