ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 1.同步API,异步API ~~~ //路径拼接 const public = path.join(__dirname, 'public') ; /请求地址解析 const urlobj = url.parse (req.url); //读取文件 fs.readFile(' ./demo.txt', 'utf8', (err, result) => ( console.log(result) ; }) ; ~~~ 5.1同步API,异步API 同步API:只有当前API执行完成后,才能继续执行下一个API ~~~ console.log('before'); console.log('after') ; ~~~ 异步API:当前API的执行不会阻塞后续代码的执行 ~~~ console.log( 'before') ; setTimeout ( () => { console.log('last') ; },2000) ; console.log('after') ; ~~~ 5.2同步API,异步API的区别( 获取返回值) 区别:**同步API可以从返回值中拿到API执行的结果,但是异步API是不可以的** ~~~ //同步 function sum (n1, n2) { return n1 + n2 ; } const result = sum (10, 20) ; ~~~ ~~~ //异步 function getMsg () { setTimeout (function () { return { msg: 'Hello Node.js' } },2000) ; } const msg = getMsg () ; ~~~ 5.3回调函数 自己定义函数让别人去调用。 ~~~ // getData函数定义 function getData (callback) {} // getData函数调用 getData(()==>{}); ~~~ ![](https://img.kancloud.cn/06/d9/06d921cb16c2c5dad5f76ceead0a8276_909x779.png) ![](https://img.kancloud.cn/0a/c5/0ac5e3464b855854eab6dc0379c6ae9d_690x528.png) 5.5同步API,异步API的区别(代码执行顺序) 同步API从上到下依次执行,前面代码会阻塞后面代码的执行 ~~~ for (var i= 0; i< 100000; i++) { console.log(i) ; } console. log(' for循环后面的代码')'; ~~~ 异步API不会等待AP|执行完成后再向下执行代码 ~~~ console.log('代码开始执行') ; setTimeout(() => { console.log('2秒后执行的代码')}, 2000) ; setTimeout(() => { console. log('"0秒"后执行的代码')},0) ; console.log('代码结束执行') ; ~~~ 上面代码异步API的结果 ![](https://img.kancloud.cn/3c/ca/3ccaec3ab6e418776ab7ffc1c605adca_503x165.png) 5.6代码执行顺序分析 ![](https://img.kancloud.cn/f8/b3/f8b315a6ef450b3bf97ee2aae0483ddb_1258x565.png)