JS中的同步异步问题
<script>
/*
* JS 是单线程
* 同步 异步
* 常见的异步
* 1、定时器
* 2、事件绑定
* 3、ajax请求(一般的都是异步)
* 4、回调函数也可以理解成 异步
* */
var oDiv = document.getElementById('div1');
console.log(1);
var timer = setTimeout(function () {
console.log(2)
},3000);
console.log(3); oDiv.onclick = function () {
console.log(4);
};
/*
*
* 浏览器怎么规划 JS的异步? 一个是主任务队列 另一个是等待任务队列
*
* 主任务队列指的是代码从上到下一次执行
* 等待任务队列 存放的是咱们的异步代码
* 等待任务队列中的代码执行的前提 是 主任务队列中的代码执行完毕
* */
// 版本1
console.log(1);
var timer1 = window.setTimeout(function () {
console.log(2)
},500);
console.log(3);
var tiemr2 = window.setTimeout(function () {
console.log(4);
var timer3 = setTimeout(function () {
console.log(6)
},200)
},200);
for(var i = 0; i < 900000000; i++){
//时间大概是 1500毫秒
};
console.log(5); //----------------------------------------
//版本2-----
console.log(1);
var timer1 = window.setTimeout(function () {
console.log(2)
},500);
console.log(3);
for(var i = 0; i < 900000000; i++){
//时间大概是 1500毫秒
};
var tiemr2 = window.setTimeout(function () {
console.log(4);
},200);
console.log(5);
//----------------------------------------
//版本3-----
console.log(1);
var timer1 = window.setTimeout(function () {
console.log(2)
},500);
console.log(3);
for(var i = 0; i < 900000000; i++){
//时间大概是 1500毫秒
}
var tiemr2 = window.setTimeout(function () {
console.log(4);
},200);
for(var i = 0; i < 900000000; i++){
//时间大概是 1500毫秒
}
console.log(5); /*
* 主任务队列先执行 依次输出 1 3 执行for for循环完毕后 再输出 5;这时主任务队列执行完毕,等待任务队列中的代码开始执行,
*
* */ console.log(1);
setTimeout(function () {
console.log(2)
},200);
while (true){ } console.log(1);
setTimeout(function () {
console.log(2)
},0);
console.log(3)
/*
* 定时器 有自己的默认最小时间,即使手写成0,也不是同步执行;也是个异步执行;
* 清除定时器,我们可以混着用;clearInterval 也能清除 timeout
* */
var timer1 = window.setTimeout(function () {
console.log(12)
},4000);
clearInterval(timer1) </script>
JS中的同步异步问题的更多相关文章
- JS中的同步异步编程
首先我们先看看同步与异步的定义,及浏览器的执行机制,方便我们更好地理解同步异步编程. 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线程,例如 ...
- 关于js中的同步和异步
最近看到前端面试问到js中的同步和异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半. 1.个人觉得,js中,最基础的异步是setTimeout和 ...
- js中的同步与异步的问题
前言 近来,总是忙于拿js写一些案例,因为是小白,并没有什么丰富的经验,对各个知识点把握也不是很全面,写起来真的是...一言难尽,太痛苦了= =.尤其是在写一些轮播的时候,里面需要用到定时器,而一旦用 ...
- socket网络编程中的同步,异步,阻塞式,非阻塞式,有何联系与区别?
一.举个打电话的例子: 阻塞 block 是指,你拨通某人的电话,但是此人不在,于是你拿着电话等他回来,其间不能再用电话.同步大概和阻塞差不多. 非阻塞 nonblock 是指,你拨通 ...
- I/O中的 同步异步,阻塞非阻塞
I/O中的同步和异步的概念和线程中不太一样. I/O写的时候,默认是写到页高速缓存就返回的,然后异步刷到磁盘上.而同步的I/O指的是改动写到磁盘上之后才会返回结果.可以通过fsync(),和fdata ...
- js中的同步与异步
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码 异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而 ...
- JS中的同步和异步
javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要 ...
- node.js中对同步,异步,阻塞与非阻塞的理解
我们都知道javascript是单线程的,node.js是一个基于Chrome V8 引擎的 javascript 运行时环境,注意 node.js 不是一门语言,别搞错了. javascript为什 ...
- js中对同步和异步的理解
你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流 ...
随机推荐
- winform 自动升级
自动升级系统OAUS的设计与实现(续) (附最新源码) http://www.cnblogs.com/zhuweisky/p/4209058.html Winform在线更新 http://www.c ...
- UVa 11806 Cheerleaders (数论容斥原理)
题意:给定一个n*m的棋盘,要放k个石子,要求第一行,最后一行,第一列,最后一列都有石子,问有多少种放法. 析:容斥原理,集合A是第一行没有石子,集合B是最后一行没有石子,集合C是第一列没有石子,集合 ...
- Ruby模块与类
Ruby是单一继承,一个类只能有一个直接的母类 Mix-in 模式来处理复合需求 多重包含: 由下往上回溯,重复的只看最上方的 换句话说,程序由上往下执行,由具体到抽象,第二次发现同一个模块 ...
- 【数据结构】27、红黑树,节点插入,修复平衡操作总结(针对jdk8中hashmap冲突过多链表转红黑树)
二叉树节点插入 0.如果只有一个节点,那么就直接作为根,涂黑,如果父为黑,或者祖父为空,那么不做操作 1.叔叔节点不为空且为红 那么就修改父,叔叔,祖父节点颜色,最后把当前节点设置为祖父节点,在进行平 ...
- Spark SQL概念学习系列之Spark SQL入门
前言 第1章 为什么Spark SQL? 第2章 Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章 测试环境之搭建 第6章 ...
- _bzoj1036 [ZJOI2008]树的统计Count【树链剖分】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 保存模版. 执行qmax与qsum操作,往上爬的时候最开始的代码出了点小问题,往上爬的 ...
- 【Hibernate】Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
今天用hibernate框架写crm项目时遇到报错: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' n ...
- idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
https://youtrack.jetbrains.com/issue/IDEA-161094
- iOS----时间日期处理
时间日期处理 1.NSDateFormatter 日期格式化 ①可以把NSString 类型转为 NSDate类型 举例 把 "2015-08-23 19:46:14" 转为NSD ...
- jq一些常用的交互效果
jq回到顶部: //回到顶部 $(window).scroll(function() { //执行处理的代码 var a = document.body.scrollTop; if($(documen ...