精华内容
下载资源
问答
  • JS同步和异步的区别 js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。如果一个任务耗时过长,那么后面的任务就...
    1. JS中同步和异步的区别
      js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。如果一个任务耗时过长,那么后面的任务就必须一直等待下去,会拖延整个程序,常见浏览器无反应,可能就是一段代码死循环,造成程序卡住在这个位置,无法继续
      为了解决这个问题,js的执行模式分为两种:同步和异步。
      “同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的;“异步模式"则完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。
      具体来说,异步运行机制如下:
      (1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
      (2)主线程之外,还存在一个"任务队列”(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
      (3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列”,看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
      (4)主线程不断重复上面的第三步。

    "异步模式"编程的4种方法
    1.回调函数
    2.事件监听,任务的执行不取决于代码的顺序,而取决于某个事件是否发生
    3.发布订阅模式,也叫观察者模式
    4.Promises对象

    最基础的异步是setTimeout和setInterval函数,很常见,但是很少人有人知道其实这就是异步,因为它们可以控制js的执行顺序

    作者:A落儿
    链接:(https://www.jianshu.com/p/9e93a854d6a5)
    来源:简书

    本文参考文章:
    (http://www.cnblogs.com/c3gen/p/6170504.html)
    (http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html)

    展开全文
  • 同步和异步关注是消息通信机制 (synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果...

    定义

    同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用
    举个例子:当你正在烤箱烤面包的时候,如果你一直在烤箱前等待面包熟的话,就是同步执行
    如果你在等待的同时,还去榨果汁,那么就是异步执行

    js机制解释

    javascript语言的执行环境是单线程。即一次只能完成一个任务。若有多个任务则需排队逐个执行——前一个任务完成,再执行后一个任务。 这种执行模式实现简单,执行环境相对单纯。

    但随着前端业务日渐复杂,事务和请求等日渐增多,这种单线程执行方式在复杂的业务下势必效率低下,只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。

    为避免和解决这种问题,JS语言将任务执行模式分为异步和同步。同步模式”就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的;”异步模式”则完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。

    展开全文
  • js中的同步和异步的区别和理解

    千次阅读 2019-07-31 21:43:38
    js中的同步和异步的区别和理解 前端面试中很容易问到的问题就是同步和异步的 <script> setTimeout(function() { console.log(1) }) console.log(2); </script> ...

    js中的同步和异步的区别和理解

    前端面试中很容易问到的问题就是同步和异步的,其实很多人潜意识是知道怎么用,也大概明白一些,但是就是不知道该怎么表达,怎么去描述这个问题。我们可以按这个思路来回答—why-what-how
    why(为什么):js是单线程的,只能处理完一件事再做另外一件事,但是设想如果前面一件事花费的时间特别长,我们就只能一直等着他,就会阻塞下面的进程,这样程序运行时间增长,就会降低用户体验。(这里可能有人会想到,如果js是多线程的,不就解决这个问题了,但是其实这是由他的主要功能决定的,他的功能是与用户互动,以及操作DOM,如果在同一个时间,一个进程创建了这个节点,另一个删除了这个节点,那就很尴尬了
    what(同步和异步是什么):
    同步:按照一定的顺序去执行,执行完一个才能执行下一个
    异步:执行顺序是不确定的,由触发条件决定,什么时间执行也是不确定的,即使是定时器(下面做解释),异步处理可以同时执行多个。

    下面看一个小小的异步的案例

    <script>
            setTimeout(function() {
                console.log(1)
            })
            console.log(2);
        </script>
        2 1
    

    上面得执行结果是先打印2,然后再打印1,(下面解释)
    如果想知道里面的原理,我们可以从js的执行机制入手:
    首先了解两个概念,同步任务和异步任务:
    同步任务:只有前一个任务执行完成后,才可执行下一个任务,在主线程中
    异步任务:这个队列的所有任务都是不进入主线程执行,进入任务队列,被浏览提供的线程执行,当执行完毕后就会产生一个回调函数,并且通知主线程,在主线程执行完当前所执行的任务后,就会调取最早通知自己的回调函数,使其进入主线程中执行,比如ajax请求,再主线程中呈现的就是请求结果~

    js的执行机制
    1、先判断是js代码是同步的还是异步的,同步的就是同步任务,直接进入主线程处理,异步的就进入任务列表
    2、当任务列表内的异步处理达到了触发条件时候(点击事件被点击时),就进入任务队列
    3、当所有的主线程的任务执行完毕之后,才会将任务队列里面的任务(回调函数)添加到主线程。

    这也就是为什么会先执行同步,再执行异步的原因,也就是先打印2,再打印1的原因
    另外也是因为先执行同步,那么如果同步执行时间太长或者出错,死循环,就不会处理异步里面的回调函数了(上面两个问题的解释)

    总结:js的异步处理是和浏览器一起作用的,js是单线程的,但是浏览器是多线程的。浏览器可以同时处理多个异步任务。但是这些异步任务中的回调函数还是在js的主线程中一个一个执行的。

    以上均是我个人的理解,仅供参考。
    以下是参考的一些博客,不是太理解的可以看看:
    鱼活在水中的博客:https://blog.csdn.net/qq_39480597/article/details/79662913;
    [阮一峰老师的博客]http://www.ruanyifeng.com/blog/2014/10/event-loop.html

    展开全文
  • 同步是指一个线程要等待上一个线程执行完才能开始执行,同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态。异步是一个线程在执行中,下一个线程不必等待它执行完就可以...

    首先,不同于其他后端语言,javascript语言是单线程机制。所谓单线程就是按次序执行,执行完一个任务再执行下一个。
    对于浏览器来说,也就是无法在渲染页面的同时执行代码。

    同步是指一个线程要等待上一个线程执行完才能开始执行,同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态。
    异步是一个线程在执行中,下一个线程不必等待它执行完就可以开始执行。异步肯定是个多线程。在客户端请求时,可以执行其他线程,并且在把这个线程存放在他的队列里面,有序的执行。
    异步的效率要高于同步。如果数据在线程间共享,那么必须使用同步!

    异步模式的四种方式:
    ① 回调函数callback
    ② 事件驱动 Event-Driven
    ③ 观察者模式Observer pattern(又称发布订阅模式publish-subscribe pattern)
    ④ promise模式

     

     

    展开全文
  • 同步和异步同步异步代码执行规则获取返回值回调函数获取异步API返回值异步代码执行顺序回调函数控制异步代码执行顺序回调地狱promise透传Promise 值传递 同步 同步:只有当前API执行完成后,才能继续执行下一个API ...
  • 关于JS同步异步的区别

    千次阅读 2019-06-26 12:07:23
    在了解JS中的同步与异步的区别前,我需要先理解同步和异步的意思。 同步(Synchronization):任务顺序执行,在上一个任务未执行完成之前下一个任务等待执行。 异步(Asynchronous ): CUP暂时搁置当前任务,等到...
  • 为什么异步加载js文件?加载方式?(至少两种方式) 异步加载方式有4种 a) 使用jquery框架,即$(document).ready(function(){}) 或者写成$(function(){}), (DOM结构绘制完毕就执行,不必等到所有资源都加载完成...
  • Ajax同步和异步的区别

    2018-03-16 16:50:46
    Ajax同步和异步的区别之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。 最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面...
  • 简述同步和异步的区别

    千次阅读 2019-07-04 00:26:01
    有些人会分不清不认识什么是同步和异步 想要分清我们首先要知道js的特性单线程。所谓单线程就是在没有完成这件事情之前不会去做下件事情 那么同步也就是好理解了。上件事情没有完成,就继续做上件事情,等上件事情...
  • ajax同步和异步的区别? 异步:在异步模式下,当我们使用AJAX发送完请求后,可能还有代码需要执行。这个时候可能由于种种原因导致服务器还没有响应我们的请求,但是因为我们采用了异步执行方式,所有包含AJAX请求代码...
  • 同步和异步的区别是什么? 场景题:12345以什么顺序打印出来?定时器的应用 知识点: 单线程和异步 应用场景 Callback hell(回调地狱) 和 Promise(解决回调地狱的问题) 单线程和异步: JS是单线程语言,只能同时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 403
精华内容 161
关键字:

同步和异步的区别js