1. 同步API,异步API

同步API:只有当前API执行完成后,才能继续执行下一个API

console.log('before');
console.log('after');

异步API:当前API的执行不会阻塞后面代码的执行

2. 同步API和异步API的区别(获取返回值)

同步API可以从返回值中拿到API执行的结果,但是异步API是不可以的



上图异步代码输出 msg 得到的是undefined

3. 回调函数(拿到异步API的执行结果)

回调函数: 自己定义函数,让别人去调用

4. 通过回调函数获取异步API执行结果

异步编程是 JavaScript 的一个特色

凡是需要得到一个函数内部异步操作的结果,如:setTimeout,readFile,writeFile,readdir以及 ajax等等。往往异步 API,都伴有一个回调函数。

这种情况必须通过:回调函数

例1:

例2:

function add(x, y, callback) {console.log(1)setTimeout(function() {var ret = x + ycallback(ret)}, 1000)
}// 如何拿到结果呢?
// 调用者就要关心这个 callback
// 1 秒钟之后 就会得到 10+ 20 的结果add(10, 20, function(ret) {console.log(ret)
})

在 function add(x, y, callback) 中:

  • callback 就是回调函数
  • var x = 10
  • var y = 20
  • var callback = function(ret) { console.log(ret) }

5. 同步API,异步API的区别(代码执行顺序)

同步API从上到下依次执行,前面代码会阻塞后面代码的执行


异步API不会等待API执行完成后再向下执行代码

6. 代码执行顺序的分析

例1:

setTimeout(function() { // 这是个异步APIconsole.log(2);console.log('hello');
}, 0)
console.log(3);

上述代码的执行结果是: 3 2 hello

原因:代码在执行过程中不会等待定时器,即使时间是0 秒,也不会等待。仍然会执行完所有的 同步代码,再执行 异步函数

例2:

function add(x, y) {console.log(1);setTimeout(function() {var ret = x + yreturn ret}, 1000)console.log(3);  //这时函数add(x, y)就结束了,但是由于在这个 add(x, y)函数里面没有返回值,所以return undefined
}
// 先打印1, 再打印3 ,最后打印undefined。
console.log(add(10, 20));

例3:

// 下面用数字表明执行步骤
function add(x, y) {var ret // 1.console.log(1); //2. 打印 1setTimeout(function() {console.log(2); //5.打印 2ret = x + y // 6.}, 1000)console.log(3); //3. 打印 3return ret //4. ret 只声明,未赋值,则是 undefined
}
console.log(add(10, 20));// 打印 1 3  undefined  2

7. Node.js中的异步API

读取文件操作

和 定时器类似,都是需要一定时间的操作。所以文件读取的结果不能通过返回值的形式拿到,需要通过回调函数。

而第二个参数就是回调函数,在文件读取完成之后,系统会来调用这个回调函数,并且在调用回调函数的时候,会将文件的读取结果通过回调函数参数的形式传递过来

事件监听的API

事件处理函数就是回调函数,我们在为服务器对象去添加请求事件的时候,这个事件处理函数我们没有主动地调用过,是因为事件处理函数的执行是在事件发生的时候,系统去调用的。

系统去调用的时候,给我们传递了两个参数,分别是请求对象和响应对象。所以我们在定义这个函数的时候,才可以通过形参的方式接收这两个对象

Node.js 异步编程(附几个小练习题学会分析代码执行顺序)相关推荐

  1. 57 Node.js异步编程

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node.js异步编程 1.1 Node.js中的异步API 如果异步API后面的代码 ...

  2. Node.js异步编程~超级详细哦

    下面是对Node.js异步编程的整理,希望可以帮助到有需要的小伙伴~ 文章目录 同步API,异步API 同步API,异步API的区别 获取返回值的方式不同 代码执行顺序不同 Node.js中的异步AP ...

  3. node.js异步编程

    目录 1.同步API 2.异步API 回调地狱 用promise解决回调地狱 异步函数 Node服务器端编程 1.同步API 只有在当前的API执行完成后,才执行下一个API.代码的执行方式是按照代码 ...

  4. 前端学习(1319):node.js异步编程

    test,js function getMsg(callback) {setTimeout(function() {callback({msg: 'hello node js'})}, 2000) } ...

  5. await原理 js_深入浅出node.js异步编程 及async await原理

    最近看了一些文章对于async await的原理及概念的解析,我觉得很多时候有些不太准确. 尤其是对于async和await会阻塞线程的说法更是有些扯淡了,JS本身就是单线程的语言如果await会阻塞 ...

  6. Node.js 异步编程之 Callback介绍

    原文:http://www.jb51.net/article/63070.htm ------------------------------------- Node.js 基于 JavaScript ...

  7. Node.js高级编程【一】node 基础

    目录 一.Node 基础 1.课程概述 2.Node.js 架构 3.为什么是Node.js ? 4.Node.js 的 异步IO 5.Node.js 主线程是单线程 6.Node.js 应用场景 7 ...

  8. promise 浏览器实现的源码_【大前端01-01】函数式编程与JS异步编程、手写Promise...

    [简答题]一.谈谈你是如何理解JS异步编程的,EventLoop.消息队列都是做什么的,什么是宏任务.什么是微任务? 如何理解JS异步编程 众所周知JavaScript语言执行环境是"单线程 ...

  9. js 异步执行_JS Asynchronous — JS 异步编程极简史

    Asynchronous JS 异步编程极简史,这个故事网上已经很多人有了自己的讲述. Event Loop 解释了 Node.js 为何以及如何实现单线程服务模型和 Event Loop.对于 JS ...

最新文章

  1. 第6章——广度优先搜索
  2. sleuth微服务整合Zipkin
  3. 用Python实现冒泡排序
  4. ANN:DNN结构演进History—RNN
  5. Teams Bot开发系列:Bot验证
  6. asp.net 时间显示格式
  7. 论文浅尝 - AAAI2020 | 迈向建立多语言义元知识库:用于 BabelNet Synsets 义元预测...
  8. 外设驱动库开发笔记0:EPD总体设计
  9. android html footer 固定,前端小技巧之footer固定
  10. JSTL标签用法:c:choosec:forEachc:ifc:whenc:set
  11. 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time:141072930277'】方案...
  12. n型半导体和p型半导体的区别_NPN型三极管和PNP型三极管有什么区别?
  13. bmp 和JPG有什么区别
  14. echarts中中国地图飞机路线使用
  15. 【DDR3_Electrical Characteristics and AC Timing】_ Setup,Hold and Slew Rate Derating
  16. 离谱!全公司电脑Alt键被抠掉,就为防员工摸鱼...
  17. ViewData、ViewBag和 TempData
  18. 银河麒麟V10安装与运行人大金仓数据库
  19. 盘点Linux操作系统的十大版本
  20. JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)

热门文章

  1. Hbase 删除列族
  2. 基于PHP房屋租赁管理系统设计与实现
  3. 使用idea导出war包
  4. 微软培训于苏州独墅湖
  5. 清华大学录取通知书又火了!各大高校通知书争奇斗艳美到哭!
  6. sql时间转换时分秒_SQL一些时间格式的转换
  7. C语言文件的读取及写入
  8. python 保存json
  9. OneHot编码知识点
  10. 奇文共赏之--企业IT架构转型之道/中台战略/数据中台