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就像一条流水线,仅仅是一条流 ...
随机推荐
- Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串
ylbtech-Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串 1.返回顶部 1. Java 实例 - 连接字符串 Java 实例 以下实例演示了通过 &qu ...
- idea清除缓存和索引
转自:https://blog.csdn.net/mzy755423868/article/details/80559381
- VC++6.0不兼容win10导致调试按钮不能正常作用得解决方案
win10正式版是一个全新的操作系统,所以我们在系统中运行类似VC6这类旧软件时,难免会遇到一些问题. 比如,现在有些用户在win10环境下运行VC6时,按F10.F11进行单步调试, 会出现:Unh ...
- hdu4815 概率问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815 好久没写dp了..最开始题意都理解错了, 哎!!我现在很饿也很困!! AC代码: #includ ...
- bzoj 1613: [Usaco2008 Jan]Running贝茜的晨练计划【dp】
设f[i][j]为第i分钟疲劳j,从三种情况转移,记得休息的时候判断从i开始休息到n能不能恢复到疲劳0 #include<iostream> #include<cstdio> ...
- mysql快捷命令
# mysql快捷命令alias mysqlstart='sudo /usr/local/mysql/support-files/mysql.server start'alias mysqlstop= ...
- [Usaco2012 Open]Balanced Cow Subsets
Description Farmer John's owns N cows (2 <= N <= 20), where cow i produces M(i) units of milk ...
- 题解报告:hdu 1060 Leftmost Digit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1060 问题描述 给定一个正整数N,你应该输出N ^ N的最左边的数字. 输入 输入包含多个测试用例. ...
- 转 PHP Cookies
cookie 常用于识别用户. 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie. ...
- mysql执行语句汇总
插入select的数据 INSERT INTO `test1`( order_id, goods_id, goods_name, goods_sn, product_id, goods_number, ...