美文网首页
JS异步和单线程——前端什么场景需要异步

JS异步和单线程——前端什么场景需要异步

作者: 李亚_45be | 来源:发表于2019-03-26 17:38 被阅读0次

一、什么时候需要异步:

1)在可能发生等待的情况

2)等待过程中不能像alert一样阻塞程序的时候

3)因此,所有的“等待的情况”都需要异步

一句话总结就是需要等待但是又不能阻塞程序的时候需要使用异步

二、前端使用异步的场景(下面这些场景都需要等待,但是在等待的过程中又不能阻塞程序,所以需要异步,异步的设计主要是因为javascript是一个单线程的语言,单线程只允许同时做一件事情,如果同时需要做多个,那其他的需要去旁边排队去):

1)定时任务:setTimeout,setInverval

2)网络请求:ajax请求,img图片的动态加载

3)事件绑定或者叫DOM事件,比如一个点击事件,我不知道它什么时候点,但是在它点击之前,我该干什么还是干什么。用addEventListener注册一个类型的事件的时候,浏览器会有一个单独的模块去接收这个东西,当事件被触发的时候,浏览器的某个模块,会把相应的函数扔到异步队列中,如果现在执行栈中是空的,就会直接执行这个函数。

4)ES6中的Promise

例子:onload

img图片的动态加载异步例子:

console.log("start");

var img=document.createElement_x_x_x_x("img");

img.onload=function(){

console.log("loaded");

}

img.src="/xxx.png";

console.log("end");

结果:先输出start 再输出end最后输出loaded

例子:事件绑定 addEventListener

console.log("start");

var btn1=document.getElementById("btn1");

btn1.addEventListener('click',function(){

console.log("clicked");

})

console.log("end");

结果先输出start再输出end点击按钮之后输出clicked,点击多少次输出多少次clicded

补充:定时器有两种类型:

1)一次性计时器

setTimeout()指定的延迟时间之后来执行代码

clearTimeout()取消setTimeout设置

setTimeout(function(){

console.log(2);

},1000);

var i=setTimeout(function(){

console.log(10);

},1000)

clearTimeout(i);//取消要执行的延时的代码块

2)间隔性触发计时器

setInterval()每隔指定的时间执行代码

clearInterval()取消setInterval()设置

var i=setInterval(function(){

console.log(10);

},1000)

clearInterval(i);//取消要执行的延时的代码块

相关文章

  • JS异步和单线程——前端什么场景需要异步

    一、什么时候需要异步: 1)在可能发生等待的情况 2)等待过程中不能像alert一样阻塞程序的时候 3)因此,所有...

  • js异步

    单线程和异步 js是单线程的同时只能做一件事,需要异步绕过阻塞 应用场景 ajax、定时任务 eventL...

  • js 异步全览

    问题! JS 为什么是单线程的? 为什么需要异步? 单线程又是如何实现异步的呢? promise 的优点是什么? ...

  • JS相关问题记录汇总

    JS异步 JS为单线程 ,而异步的概念则为JS独有 , 某些用户角度来讲不需要等待的事情单线程就会导致任务排队 ,...

  • js的单线程和异步

    js的单线程和异步 js是一直是单线程的,浏览器才是实现异步的那个家伙

  • Promise相关知识

    一、Promise基础 1.为什么需要Promise? js是一门单线程语言,所以早期我们在解决异步的场景时,通常...

  • Promise入门详解和基本用法

    异步调用 异步 JavaScript的执行环境是单线程。 所谓单线程,是指JS引擎中负责解释和执行JavaScri...

  • JS基础知识5--同步和异步

    题目 一,同步和异步的区别是什么?异步是基于JS单线程的,异步不会阻塞代码的执行,同步会阻塞代码的执行 二,手写p...

  • JS执行机制

    首先我们来看几个问题: 1.JS是单线程的么?2.JS有异步么?3.JS单线程怎么实现的的异步 1.JS是单线程的...

  • javascript单线程,异步与执行机制

    js的单线程模型与游览器的进程/线程息息相关,在了解js单线程与异步的时候,建议先看看这篇文章 单线程/异步 js...

网友评论

      本文标题:JS异步和单线程——前端什么场景需要异步

      本文链接:https://www.haomeiwen.com/subject/lgdnvqtx.html