精华内容
下载资源
问答
  • JS是单线程语言,凡是需要程序等待的都需要采用异步来执行,或者可以说叫程序阻塞 简单介绍: 1.网络请求:ajax请求、动态加载(onLoad方法) console.log(100); $.ajax({ method:‘GET’, url:‘test.php’, success...

    JS是单线程语言,凡是需要程序等待的都需要采用异步来执行,或者可以说叫程序阻塞
    简单介绍:
    1.网络请求:ajax请求、动态加载(onLoad方法)
    console.log(100);
    $.ajax({
    method:‘GET’,
    url:‘test.php’,
    success(){
    console.log(200);
    },
    })
    console.log(300);
    输出结果(100,300,200)
    2.定时任务:setTimeOut 、setInterval
    console.log(100);
    setTimeOut(()=>{
    console.log(100);
    },1000);
    console.log(300);
    输出结果(100,300,200)
    3.JS事件绑定
    console.log(100);
    $(’.btn).click(()=>{
    console.log(200);
    });
    console.log(300);
    输出结果(100,300,200)

    展开全文
  • 何为异步,何为同步,一篇简短的文章让你看懂; 异步: 异步最经典的就是http请求,比如ajax,axios,setTimeout等,异步就是程序在处理中还没处理完时,不会影响后面的程序执行,你可以理解把异步操作放在一个盒子里...

    何为异步,何为同步,一篇简短的文章让你看懂;

    异步:

    异步最经典的就是http请求,比如ajax,axios,setTimeout等,异步就是程序在处理中还没处理完时,不会影响后面的程序执行,你可以理解把异步操作放在一个盒子里,他处理完了拿到结果自己从盒子里出来。

    常见问题:

    我们需要这个异步操作处理完了才执行下面的操作怎么办,放在以前我们会怎么做,这个函数处理完了,在调取另一个函数,有的索性直接不封装函数,一个方法吧逻辑全部写完,这样看起来代码冗余不说,函数调用的时候灵活性太低,有些函数我们一个页面用四次,那你把这段逻辑复制四次吗,当然不是,我们都是函数封装一次,直接调用四次,那么问题来了,函数一调用完,我们要根据返回的参数调取函数二,函数二调用完要根据返回值调取函数三,如果我们层层嵌套,这样太深了也会导致代码看起来不简洁不明了,有了es6的promise,我们就可以调取他的回调方法.then()或者.catch()方法来进行处理后面的函数调用了,不懂得可以去我主页看promise详解的文章

    同步:

    同步就是处理的时候我后面程序就不能执行,必须等我处理完在执行后面的程序

    常见问题:

    同步常见问题就是有时候我们一段代码可能要执行好几秒,那这样就会照成程序卡顿,这样怎么办,简单,吧同步变成异步即可,es6新出的promise完美解决这个问题,不懂得可以去我主页看promise详解的文章

    展开全文
  • 所谓"单线程",就是指一次只能完成一件任务。...常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。 为了解...

    所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
    这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。
    为了解决这个问题,Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。
    "同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的;"异步模式"则完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。
    "异步模式"非常重要。在浏览器端,耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作。在服务器端,"异步模式"甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有http请求,服务器性能会急剧下降,很快就会失去响应。

    原文链接:https://www.jianshu.com/p/8b584aca2d90

    展开全文
  • --ES5:通过回调函数来处理异步执行的结果--> function fn(callback){ setTimeout(()=>{ var call = "hello world"; callback(call); }, 1000); } fn(function(call){ console.log(call); //hello ...
    <!--ES5:通过回调函数来处理异步执行的结果-->
    function fn(callback){
         setTimeout(()=>{
             var call = "hello world";
    		 callback(call);
        }, 1000);
    }
    fn(function(call){
    	console.log(call); //hello world
    });
    
    <!--ES6新特性:Promise-->  
    <!--promise 用同步的写法执行异步代码-->
    <!--Promise 优化了回调函数的用法,让原本需要纵向一层一层嵌套的回调函数实现了横向的调用,也就是链式调用-->  
    <!--Promise是同步的,它里面执行到异步任务以前都是同步执行的。当执行的异步任务的时候,就被挂起了,然后继续执行主线程Promise后面的代码。当异步任务有结果返回的时候,Promise的状态就改变啦!-->
    <!--Promise 构造函数接受一个函数作为参数,函数里面有两个参数 resolve 和 reject ,其中 resolve 作为执行成功的函数, reject 作为执行失败的函数-->
    function fn(resolve,reject){
         setTimeout(()=>{
             var call = "hello world";
    		 resolve(call);
        }, 1000);
    }
    let p = new Promise(fn);
    p.then(function(res){
    	console.log(res); //hello world
    })
    
    <!--ES7新特性:asyncawait-->
    /*
    *1. async 将普通方法转为 异步并且返回 promise对象
    *2. await 将异步代码转为同步结果,等着异步代码执行完才执行后面的代码
    */  
    <!--async 将普通方法转为 异步并且返回 promise对象-->
    async function test(){
    	return 'goods';
    }
    console.log(test());//Promise {<resolved>: "goods"}
    let p = test();
    p.then(function(res){
    	console.log(res); //goods
    })
    
    <!--await 必须在异步函数中使用-->
    async function test(){
    	return 'goods';
    }
    //await 必须在异步函数中使用
    async function fn(){
    	let data = await test(); 
    	console.log(data); //goods
    }
    fn();
    
    //例  
    async function fn1(){  
    	return  '成功';
    }
    async function fn2(){
    	console.log(1111);
    	let  p = fn1();
    	p.then(function(res){
    		console.log(res);
    	});
    	console.log(3333);
    }
    fn2();
    /**
    输出:
    	1111
    	3333
    	成功
    */
    
    async function fn1(){  
    	return  '成功';
    }
    async function fn2(){
    	console.log(1111);
    	// await 将异步代码转为同步结果,等着异步代码执行完才执行后面的代码
    	let data = await fn1();  
    	console.log(data);
    	console.log(3333);
    }
    fn2();
    /**
    输出:
    	1111
    	成功
    	3333
    */
    
    
    展开全文
  • JavaScript同步异步 JS语言的一大特点是单线程,同一时间只能做一件事。意味着一件事结束以后 才能进行下一件事。 HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程。于是有了同步和异步。 同步: 前一个...
  • 1.背景介绍什么是同步,什么是异步?同步指的是一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。异步指的是每一个任务有一个或多个回调函数(callback),前一...
  • js同步异步的理解分析

    千次阅读 2019-05-19 19:47:39
    一、同步异步的概念 单线程:在JS引擎中负责解释和执行JavaScript代码的线程只有一个,一般称它为主线程。但是实际上还存在其他的线程,可以称之为工作线程。JS的单线程能够提高工作效率。JavaScript的主要用途是...
  • js执行机制 同步 异步

    2020-06-03 14:55:05
    javascript是单线程 ...单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务,这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉
  • 众所周知,js执行引擎是单线程的,那么js中的异步又是如何实现的呢? 原来js异步执行是由浏览器线程执行的。同步异步的执行过程如下: 同步方法按顺序进入执行栈,由js执行引擎顺序执行。 异步方法交给浏览器...
  • JS同步异步以及回调函数?

    千次阅读 2018-07-04 20:13:10
    1.背景介绍什么是同步,什么是异步?同步指的是一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。异步指的是每一个任务有一...2.知识剖析javascript实现异步的原...
  • 宏任务和微任务 js是单线程 宏任务 分类:setTimeout,setInterval,requrestAnimationFrame 微任务 分类:new Promise().then(回调),process.nextTick 一、 async function async1() { console.log('async1 start...
  • 下面小编就为大家带来一篇同步异步动态引入js文件的几种方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • JS同步异步

    2020-06-10 16:15:17
    什么是同步 同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。 什么是异步 异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。 当...
  • JavaScript同步异步理解

    2020-07-02 21:26:21
    同步异步是什么 同步:调用某个程序时,调用方需要等到这个调用返回结果才能继续往后执行 异步:和同步相反,调用方不用等到结果,而是在调用执行后,调用者可以继续执行后续操作 比如说:你要去买手机,到了商店你...
  • js中的同步异步执行顺序 放在前面 转载自阮一峰 异步执行的运行机制如下。(同步执行也是如此,因为它可以被视为没有异步任务的异步执行。) (1)所有同步任务都在主线程上执行,形成一个执行栈(execution ...
  • JavaScript实现同步异步的原理

    千次阅读 2019-05-14 09:34:32
    一、JavaScript同步异步的背景 你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,...
  • 今天小编就为大家分享一篇关于Nodejs让异步变成同步的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 首先问问自己当面试官问到js中的同步异步,这个问题该怎么回答?理解一个问题无非是what-why-how js同步异步问题是什么–>为什么会产生异步问题–>如何解决。 一、JavaScript起源 技术的出现,和应用场景密切...
  • javascript中的同步异步

    千次阅读 2018-12-17 16:40:23
    javascript语言是一门“单线程”的语言,不像java语言,...其实同步异步,无论如何,做事情的时候都是只有一条流水线(单线程),同步异步的差别就在于这条流水线上各个流程的执行顺序不同。 最基础的异步是set...
  • JS同步异步问题

    千次阅读 多人点赞 2019-02-26 10:53:52
    一、单线程 (1)单线程的概念  ... 答案是否定的,JavaScript是一门单线程的语言,因此,JavaScript在同一个时间只能做一件事,单线程意味着,如果在同个时间有多个任务的话,这些任务就需要进行...
  • 为了解决排除等待问题,JS的任务分为同步任务(synchronous)和异步任务(asynchronous)。 所有同步任务都在主线程上执行,形成一个执行栈。异步任务不进入主线程,而是进入另一个【任务队列】。同步任务顺序执行,...
  • 关于JS同步异步

    千次阅读 多人点赞 2018-10-09 17:20:50
    关于js中的同步异步 最近看到前端面试问到js中的同步异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半。   1.个人觉得,js中,最基础的异步是...
  • js中的同步异步的个人理解

    万次阅读 多人点赞 2017-06-09 15:09:05
    你应该知道,javascript语言是一门“单线程”的语言,不像java语言,...那么这里说的同步异步到底是什么呢?其实个人觉得js官方的文档在使用两个词的时候并不准确,包括很多其他词汇,都只是听起来高深,但实际应用好
  • js中的同步异步的个人理解 这个文章写得非常详细,推荐看一下 所以结合以上,如果一定要在回调函数中加上参数该怎么做呢? class A extends React.Component{ b=(e)=>{ alert('b'); } render() { return ...
  • js中的同步异步

    千次阅读 2020-01-14 07:50:00
    整篇文章主要了解js中的同步异步问题,js是一门单线程的语言,浏览器解析js代码是同步顺序执行的,但是浏览器本身是多线程的, js实现异步是通过事件循环来实现的 定时器setTimeout,setInterval本质上是浏览器提供...
  • js同步异步 回调函数

    千次阅读 2018-10-21 16:05:39
    js同步异步 同步 指的是一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 异步 是指每一个任务有一个或多个回调函数,前一个任务结束后,不是执行后一个任务...
  • 转载来源信息: 作者:子晓_ 来源:CSDN ... 正文: 不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。...JavaScript是按照语句出现的...
  • 下面小编就为大家带来一篇不同js异步函数同步的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • js中的同步异步的区别和理解

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,006
精华内容 54,802
关键字:

js同步异步