node 异步,nodejs原理和特点

  node 异步,nodejs原理和特点

  

首先理解什么是异步编程

  含义:

  有异步就一定有同步。

  任何存在的回调函数都是异步代码。

  首先执行同步代码。看到异步代码,就把异步代码放到异步代码执行区(不要先执行)。

  继续执行同步代码,当所有同步代码完成后,执行异步代码。

  异步代码案例:

  console . log(“1”);

  setTimeout(()={

  Console.log(在2秒内执行.);

  },2000);

  console . log( end );程序执行后的输出结果:

  一个

  仁慈

  2秒后执行…

  总结:代码会在执行中会依次执行,但执行到回调函数,就会把回调函数放入异步代码执行区,先不执行,如果代码执行完后,再去依次执行放入异步代码执行区。

  同步代码行案例:

  for(设I=0;i10i ){

  console.log(一);

  }

  console . log( end );程序执行后的输出结果:

  0123456789

  结束总结:同步代码,for循环无论执行多久,下面代码都要等待它执行完毕后才会执行。

  

2.为什么有异步编程

   nodejs的特点是单线程、异步、非阻塞。如果代码逻辑涉及多次回调,就会出现非常可怕的代码,不利于后期维护。

  异步编程的作用是提高效率。现在程序越来越大,CPU和内存的压力也越来越大。需要异步编程,因为它允许计算机同时处理多个事务。

  

3.如何处理异步编程出现的问题

  在我们的项目中,会出现一些问题,比如因为异步编程,导致值未定义。

  解决方案:回调函数嵌套,Promise,await,async语法sugar变为同步。

  现在文件夹里有三个txt文件,1,2,3。我们需要阅读这三个文件。如果第一次直接读,第二次可能顺序就乱了,所以需要处理异步的问题,让它们按顺序执行。

  使用回调函数嵌套代码:

  const fs=require(fs )

  const path=require(path )

  让p1=path.join(1.txt )

  让p2=path.join(2.txt )

  让p3=path.join(3.txt )

  fs.readFile(p1, utf8 ,(err,data)={

  如果(错误)抛出错误

  console.log(数据)

  fs.readFile(p2, utf8 ,(err,data)={

  如果(错误)抛出错误

  console.log(数据)

  fs.readFile(p3, utf8 ,(err,data)={

  如果(错误)抛出错误

  console.log(数据)

  })

  })

  })使用承诺代码:

  NewPromise的作用:让异步代码立即执行。

  const fs=require(fs )

  函数readFile(路径){

  返回新承诺((解决,拒绝)={

  fs.readFile(路径, utf8 ,(err,data)={

  解析(数据)

  })

  })

  }

  让p1=readFile(1.txt )

  让p2=readFile(2.txt )

  让p3=readFile(3.txt )

  p1.then(结果={

  console.log(结果)

  返回p2

  }).然后(结果={

  console.log(结果)

  返回p3

  }).然后(结果={

  console.log(结果)

  返回p3

  })也可以使用await,async语法sugar代码:

  const path=require(path )

  const fs=require(fs )

  让p1=readFile(1.txt )

  让p2=readFile(2.txt )

  让p3=readFile(3.txt )

  var readfile=(路径)={

  返回新承诺((解决,拒绝)={

  fs.readFile(路径, utf8 ,(err,data)={

  解析(数据)

  })

  })

  }

  异步函数exec() {

  等待读取文件(p1)。然后(result=console.log(result))

  等待读取文件(p2)。然后(result=console.log(result))

  等待读取文件(p3)。然后(result=console.log(result))

  }

  Exec()【推荐:node.js视频教程】

  以上是深入理解NodeJs异步编程含义的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: