js中的同步与异步的问题
前言
近来,总是忙于拿js写一些案例,因为是小白,并没有什么丰富的经验,对各个知识点把握也不是很全面,写起来真的是...一言难尽,太痛苦了= =、尤其是在写一些轮播的时候,里面需要用到定时器,而一旦用了定时器,就要考虑js中一个重要无比的知识点!没错,就是同步与异步,这问题困扰了我很长时间,经过几番波折.......还是没有把案例搞出来,哈哈,但是对这个知识点还是了解了不少,于是就有了这篇博客~下面进入正题:
知识点罗列
1、同步:js本身就是同步的,也就是说代码从上往下执行的这么一个机制。
2、异步:每个模块执行自己的,同时执行。emmm...看起来挺难理解的,举个栗子吧,嗷..对了,这里说一下js中异步有"定时器"、"ajax"、"事件的绑定"、"回调函数",差点忘了,哈哈。
我们拿事件来简单的了解一下异步,下面是栗子的代码~:
看完之后,我们可以先自己屡一下思路,当依次点击三个div时,console.log(j)到底会输出什么。
需要注意的是,这个事件是写在for循环里的,而事件又是异步的,所以for循环在遍历时不会管你这个事件到底触发没触发,它都会继续向下执行代码,
直到循环结束,而当页面加载完毕后,for循环肯定也就遍历完毕了,此时的i值为2,之后我们点击第一个div时,也就是事件元素的索引为0时,图中箭头所指的i值就是2,所以会依次输出0、1、2,与目的不符,意思就是想让0出来,但是1和2也跟着蹦出来了,所以我们一般会将外面for循环的i值存到一个自定义属性ind里,然后把箭头所指的i换为this.ind,这样两者就会相匹配,只会输出0。很恶心的...不过见多了,其实也就那个样。
好了,听了我稀里糊涂的讲解,有没有很清晰的赶脚?/捂脸
就先这样吧,等我把案例敲出来了再继续补充别的。 /滑稽脸
js中的同步与异步的问题的更多相关文章
- js中对同步和异步的理解
你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流 ...
- js中的同步和异步的个人理解(转)
你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流 ...
- 关于js中的同步和异步
最近看到前端面试问到js中的同步和异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半. 1.个人觉得,js中,最基础的异步是setTimeout和 ...
- JS中的同步和异步
javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要 ...
- JS中的同步异步编程
首先我们先看看同步与异步的定义,及浏览器的执行机制,方便我们更好地理解同步异步编程. 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线程,例如 ...
- JS中的同步异步问题
<script> /* * JS 是单线程 * 同步 异步 * 常见的异步 * 1.定时器 * 2.事件绑定 * 3.ajax请求(一般的都是异步) * 4.回调函数也可以理解成 异步 * ...
- js中的同步与异步
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码 异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而 ...
- node.js中对同步,异步,阻塞与非阻塞的理解
我们都知道javascript是单线程的,node.js是一个基于Chrome V8 引擎的 javascript 运行时环境,注意 node.js 不是一门语言,别搞错了. javascript为什 ...
- JS中同步和异步
首先,我们要知道,JavaScript的本质是一门浏览器脚本语言,在执行的时候是一行一行的执行,只有前面的代码执行完了才会执行后面的代码.JS是单线程语言指的就是这个意思. 同步和异步其实在进行任务执 ...
随机推荐
- [Objective-C语言教程]类型转换(20)
类型转换是一种将变量从一种数据类型转换为另一种数据类型的方法. 例如,如果要将long值存储到简单整数(int)中,则可以将long类型转换设置为int.使用强制转换运算符将值从一种类型转换为另一种类 ...
- openproject安装与使用
思路: 1.生成config配置文件 2.导出配置文件,修改配置文件,删除容器,重新部署容器 3.登录后配置, 4.配置git,可以从openproject里查看gitlab上的代码库 第一次安装: ...
- [整理]Unicode 与 UTF8
目录 先上总结 ASCII utf-8 编码规则 UTF-16 其他 先上总结 Unicode 是一个符号集, 规定了所有符号的二进制编号. UTF8 是unicode的一种编码方式(存储, 传输方式 ...
- elment 中 el-table 进行校验
脑洞大开:什么是展示数据最好的方式呢,表格,写得又快,又清晰,又明显,那么就积累一些工作中表格经常使用到的东西. 第一步:效果图: 第二步:举个例子: <template> <div ...
- HQL的使用和limit的替代
1.HQL不同于SQL,from必须是项目中table反转后对应的class的名字. 2.如何使用参数生成HQL语句: String hql = "from User where userI ...
- tomcat startup.brt启动一闪而过
今天启动皕杰自带的tomcat的时候,直接点startup.brt控制台窗口一闪而过. 改用cmd命令启动: 切换到 E:\皕杰报表\皕杰报表3.5\DemoServer\bin目录 运行startu ...
- MySQL 创建schema
create schema zzz default character set utf8 collate utf8_general_ci;--创建数据库 grant select,insert,upd ...
- SQL中动态进行行转列
课程表 CREATE TABLE [dbo].[demo_Course]( [Cid] [uniqueidentifier] NOT NULL, ) NULL, CONSTRAINT [PK_demo ...
- 查看Postgresql的连接状况
今天遇到一个问题,就是pg一直报错,说有太多的客户端连接到数据库上面.但现在不知道是什么程序连接.pg默认的max_connection是100,我并没有修改过,以为平时公司内部用,应该够了,但现在貌 ...
- Mac下的SSH插件(默认自带)
Mac下默认自带,直接通过终端输入ssh获取更多的参数帮助.