Node.js 同步与异步编程

同步API: 只有当前API执行完成之后,才能继续执行下一行API。从上往下,一行一行的执行。

console.log("one")

console.log("two")

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

 console.log("one")

setTimeout ( () =>  console.log("two"), 3000)

console.log("three")

同步API与异步API的区别(获取返回值)

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

// 同步

function sum (a, b) {
  return a+ b
}
// 异步

function getMsg () {
  setTimeout( function () {
    console.log(‘hello node.js‘)
  })
}

异步API获取数据的方式(回调函数)

 1 function getMsg (fn) {
 2   setTimeout(function () {
 3     fn({
 4       msg: ‘hello‘
 5     })
 6   }, 3000)
 7 }
 8
 9 getMsg(function (data) {
10   console.log(data)
11 })

原文地址:https://www.cnblogs.com/liea/p/11220711.html

时间: 2024-08-25 14:34:29

Node.js 同步与异步编程的相关文章

node.js同步及异步读取写入删除文件1

node.js初学中,在文件中同步及异步读取文档的过程: 1.同步读取: var fs=require("fs") //直接读取文档,并将同步返回值,赋值给变量 var data=fs.readFileSync("input.txt"); console.log(data.toString()); 2.异步读取: var fs=require("fs"); //通过回调函数返回获得的data值: fs.readFile("input.t

Node.js入门:异步IO

异步IO 在操作系统中,程序运行的空间分为内核空间和用户空间.我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务. 同步IO的并行模式 多线程单进程    多线程的设计之处就是为了在共享的程序空间中,实现并行处理任务,从而达到充分利用CPU的效果.多线程的缺点在于执行时上下文交换的开销较大,和状态同步(锁)的问题.同样它也使得程序的编写和调用复杂化. 单线程多进程 为了避免多线程造成的使用不便问题,有的语言选择了单线程保持调用简单化,采用启

Node.js开发入门—UDP编程

Node.js也提供了UDP编程的能力,相关类库在"dgram"模块里. 与TCP不同,UDP是无连接的,不保障数据的可靠性,不过它的编程更为简单,有时候我们也需要它.比如做APP的统计或者日志或者流媒体,很多流媒体协议都会用到UDP,网上一搜一大堆. 使用UDP,如果你要发送数据,只需要知道对方的主机名(地址)和端口号,扔一消息过去即可.至于对方收不收得到,听天由命了.这就是数据报服务,类似快递或邮件. 我们这次来介绍一下Node.js里的UDP编程,我会提供一个UDP版本的echo

promise 的基本概念 和如何解决js中的异步编程问题 对 promis 的 then all ctch 的分析 和 await async 的理解

* promise承诺 * 解决js中异步编程的问题 * * 异步-同步 * 阻塞-无阻塞 * * 同步和异步的区别? 异步;同步 指的是被请求者 解析:被请求者(该事情的处理者)在处理完事情的时候的通知机制. 异步:当事情处理完成后被请求者会发信息通知请求者该事情处理完成.在这期间被请求者可以选择是继续等待命令请求完成还是去做其他事等待被请求者返回. 同步:当事情处理完成后被请求者不会告知请求者,等到请求者发来询问是才会告知 阻塞:非阻塞 指的是请求者 阻塞:针对请求者来说的,委托其他人处理一

js同步和异步

异步并不是同步,异步是单线程,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行. 并发是多线程, 同步:一定要等任务执行完了,得到结果,才执行下一个任务. 异步:不等任务执行完,直接执行下一个任务. 简而言之,言而总之:同步就是我强依赖你(对方),我必须等到你的回复,才能做出下一步响应.即我的操作(行程)是顺序执行的,中间少了哪一步都不可以,或者说中间哪一步出错都不可以,类似于编程中程序被解释器顺序执行一样:同时如果我没有收到你的回复,我就一

Node.js中的异步I/O是如何进行的?

Node.js的异步I/O通过事件循环的方式实现.其中异步I/O又分磁盘I/O和网络I/O.在磁盘I/O的调用中,当发起异步调用后,会将异步操作送进libuv提供的队列中,然后返回.当磁盘I/O执行完成之后,会形成一个事件,事件循环的过程中发现该事件后,会将其消费.消费过程就是将得到的数据和传入的回调函数执行. 网络I/O与磁盘I/O的差异在于它不需要线程池来进行处理,而是在每次时间循环的过程中通过IOCP/epoll/kqueue/event ports来获取网络I/O的 事件队列. 摘自:<

回调callback的C#及JS同步、异步实现

代码很简单,不多做解释,如果有疑问和建议请留言,回第一时间回复 C#代码first class Program { static void Main(string[] args) { MyCallback mc = new MyCallback(); mc.Callback(new Action(success), new Action(failed)); mc.Callback(new Action(() => { Console.WriteLine("无参匿名success"

NODE.js同步调用获取mysql快3网站搭建数据时遇到的大坑

mysql调用获取数据,快3网站搭建[企鹅21717-93408]只能是异步方式返回结果,不能同步获取结果,因此,须在回调函数中编写处理事件.期间看了下Aysnc.js,是用于多个要返回回调函数的事件,将这些事件有序的组织起来,最后只返回一个回调函数,并没有改变异步的本质,而是将多个异步整合为一个异步,从而满足写程序的需求. 错误示范 获取数据库中的数据函数 var _getUser = function(name) {var sql = "SELECT * FROM " + TABL

NODE.JS之我见

NODE.JS之我见 先说说为什么有这篇文章,关注NODE.JS 也有一段时间了,不敢说大彻大悟,但是对于NODE.JS能干什么,还是有一定的了解,笔者多年以前就研究过JavaScript引擎V8,可以说是国内最早编译并研究V8代码的人之一,这一点有博客为证.虽然NODE.JS的成功是有目共睹的,在社区的火爆程度也是路人皆知的,但是从笔者的角度来看,NODE.JS并没有给计算机科学带来任何的新东西,对于我来说它也并没有任何的新意,对于这一点,笔者并不愿意挑起任何的争论,但是欢迎讨论,也欢迎不同的