作者:洛丽塔珊珊_668 | 来源:互联网 | 2023-09-02 14:30
web前端|前端问答nodejsweb前端-前端问答晓风彩票源码,vscode命名插件,ubuntu18.04没有网,tomcat模拟实现,sqlite是否附加表,js里显示时分秒
web前端|前端问答
nodejs
web前端-前端问答
晓风彩票源码,vscode 命名插件,ubuntu18.04没有网,tomcat模拟实现,sqlite是否附加表,js里显示时分秒的插件,前端的框架怎么用,网络爬虫制作公司,php 项目源码,SEO站长联盟头像,网站表单源码,易语言正则取网页,淘客免费网站模板,jq 刷新页面,物流管理系统 下载,网上商城 程序lzw
node同步与异步的区别是什么微信源码开源,代码片段管理vscode,ubuntu回退版本,tomcat存放的内容,sqlite可以做数据库吗,爬虫 流程,php html字符转义,seo排名相关规则,需要登录的网站如何仿,仿聚划算模板代码lzw
同步就是程序自上而下运行,而异步就是不用等待上面的运行完后再运行下面的操作。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
android图片下载源码,vscode多行粘贴,ubuntu的虚拟机,tomcat默认并发,sqlite c 创建表,支付宝代扣插件,前端框架ui有哪些,移动扫号爬虫,php 位或,seo免费教程seo博客,网站源码不支持php7,简洁网页模板下载,html 专题模板,js 鼠标滚轮 页面不动,mg网上预约挂号管理系统 v3.0,小程序自助点餐语音播放lzw
同步的英文:sync(synchronization)
异步的英文:async(asynchronous)
同步API:只有当前API执行完成后,才能继续执行下一个API
console.log('before'); console.log('after');
异步API:当前API的执行不会阻塞后续代码的执行
console.log('before');setTimeout( () => { console.log('last');}, 2000);console.log('after');
同步API, 异步API的区别( 获取返回值 )
同步API可以从返回值中拿到API执行的结果, 但是异步API是不可以的(好像在异步API里面写return也是拿不到结果的?)
// 异步 function getMsg () { setTimeout(function () { return { msg: 'Hello Node.js' } }, 2000); } const msg = getMsg (); //函数没有写return 默认是返回 undefinedcnsole.log(msg); // 输出的是 undefined,因为定时器还没执行完就执行了输出
回调函数
自己定义函数让别人去调用。
// getData函数定义 function getData (callback) {} // getData函数调用 getData (() => {});/*例子------------------*/function getMsg (callback) { setTimeout(function () { callback ({ msg: 'Hello Node.js' }) }, 2000);}getMsg (function (msg) { console.log(msg);});
同步API, 异步API的区别(代码执行顺序)
同步API从上到下依次执行,前面代码会阻塞后面代码的执行
异步API不会等待API执行完成后再向下执行代码
代码执行顺序分析
Javascript分为同步代码执行区和异步代码执行区,它们之间有回调函数队列连接。首先,Javascript会执行同步代码区的全部内容,然后再去异步代码区执行代码,查找异步代码区执行完成的代码块,找到就马上去找到这个异步代码块对应的回调函数放到同步代码执行区来执行
Node.js中的异步API
读取文件API,有回调函数。
事件监听的API,也有回调函数。(事件处理函数就是回调函数,事件监听API就是异步API)
如果异步API后面代码的执行依赖当前异步API的执行结果,但实际上后续代码在执行的时候异步API还没有返回结果,这个问题要怎么解决呢?
比如有个需求:依次读取A文件、B文件、C文件(读完A再读B接着读C,不能同时读取)
如果实现上面这个需求就会导致将B读取的操作放到A的回调函数里面,而读取C的操作放到B的回调函数里面,导致嵌套层次很多(回调地狱)
const fs = require('fs');fs.readFile('./1.txt', 'utf8', (err, result1) => {console.log(result1)fs.readFile('./2.txt', 'utf8', (err, result2) => {console.log(result2)fs.readFile('./3.txt', 'utf8', (err, result3) => {console.log(result3)})})});
《nodejs视频教学》