回调函数

jquery ajax 方法及各参数详解

≯℡__Kan透↙ 提交于 2019-12-22 08:38:16
1.$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。 参数列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址。 type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。 async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。 function (XMLHttpRequest) { this; // the options for this ajax request } cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。 complete Function

JS的运行机制

故事扮演 提交于 2019-12-22 04:36:11
代码块: JS中的代码块是指由<script>标签分割的代码段。JS是按照代码块来进行编译和执行的,代码块间相互独立(即就算代码块1出错,但不影响代码块2的加载和执行),但变量和方法共享。 案例:2个代码块 <script type="text/javascript"> console.log("这是代码块一"); </script> <script type="text/javascript"> console.log ("这是代码块二"); </script> HTML页面中JS的加载原理: 在加载HTML页面的时候,当浏览器遇到内嵌的JS代码时会停止处理页面,先执行JS代码,然后再继续解析和渲染页面。同样的情况也发生在外链的JS文件中,浏览器必须先花时间下载外链文件中的代码,然后解析并执行它,在这个过程中,页面的渲染和用户互交完全被阻塞。由于现代浏览器都允许并行下载JS文件,因此<script>标签在下载外部资源时不会阻塞其他的<script>标签。遗憾的是JS下载过程仍然会阻塞其他资源的下载。 JavaScript的单线程: JS语言的一大特点就是单线程,也就是说,同一个时间只能做一件事情。之所以是单线程,是因为与它的用途有关,作为浏览器脚本语言,JS的主要用途是与用户互动以及操作DOM。这决定了它只能是单线程,否则会带来复杂的同步问题。为了利用多核CPU的计算功能

JS异步编程,回调函数与promise

夙愿已清 提交于 2019-12-22 04:33:10
  Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象。   ES6之前,JavaScript中异步编程分为3类:DOM事件(如onclick)、网络请求(如ajax)、定时器(setTimeout/setInterval)。他们均使用回调函数来进行异步调用。当回调函数中嵌套了回调函数,甚至是多层回调时,编码就不够直观了。而使用Promise就能通过同步的编码方式实现异步调用。 1.多层回调:使用setTimeout()函数执行3层嵌套的异步回调,编码不直观 1 function async(){ 2 setTimeout(function(){ //回调函数1 3 console.log(1); 4 setTimeout(function(){ //回调函数2 5 console.log(2); 6 setTimeout(function(){ //回调函数2 7 console.log(3); 8 },1000); 9 },1000); 10 },1000) 11 } 12 13 async(); 14 15 //调用结果:1s后打印1 2s后打印2 3s后打印3 2.promise:以同步顺序编码来执行3次异步回调 通过return

js-异步机制与同步机制

♀尐吖头ヾ 提交于 2019-12-22 04:32:48
Javascript的优势之一是其如何处理异步代码。异步代码会被放入一个事件队列,等到所有其他代码执行后才进行,而不会阻塞线程 1 理解异步代码: 1.1 JavaScript最基础的异步函数是setTimeout和setInterval。setTimeout会在一定时间后执行给定的函数。它接受一个回调函数作为第一参数和一个毫秒时间作为第二参数。 console.log(1); setTimeout(function() { console.log('a'); },1000); setTimeout(function() { console.log('b'); },1000); setTimeout(function() { console.log('c'); },1000); console.log(2); 正如预期,控制台先输出1、2,大约500毫秒后,再看到“a”、“b”、“c”。我用“大约”是因为setTimeout事实上是不可预知的。实际上,甚至 HTML5 规范都提到了这个问题: “这个API不能保证计时会如期准确地运行。由于CPU负载、其他任务等所导致的延迟是可以预料到的。” 1.2 Event Loop队列 有趣的是,直到在同一程序段中所有其余的代码执行结束后,超时才会发生。所以如果设置了超时,同时执行了需长时间运行的函数,那么在该函数执行完成之前

异步编程上篇

懵懂的女人 提交于 2019-12-22 04:31:45
第 16 章异步编程 随着计算机的不断发展,用户对计算机应用的要求越来越高,需要提供更多、更智能、响应速度 更快的功能。这就离不开异步编程的话题。同时,随着互联网时代的崛起,网络应用要求能够支 持更多的并发量,这显然也要用到大量的异步编程。那么从这节课开始,我们会学习到底什么是 异步编程,以及在 JS中如何实现异步编程。 本章我们将学习如下内容: ・什么是异步编程。 •回调和Promise。 • 生成器 Generator。 • ES7中的异步实现Async和Await。 16-1 异步编程概述 16-1-1 什么是异步编程? 我们先来看看到底什么是异步。提到异步就不得不提另外一个概念:同步。那什么又叫同步呢。 很多初学者在刚接触这个概念时会想当然的认为同步就是同时进行。显然,这样的理解是错误 的,咱不能按字面意思去理解它。同步,英文全称叫做 Synchronization 。它是指同一时间只能做 —件事,也就是说一件事情做完了才能做另外一件事。 比如咱们去火车站买票,假设窗口只有1个,那么同一时间只能处理1 个人的购票业务,其余的需 要进行排队。这种 one by one 的动作就是同步。这种同步的情况其实有很多,任何需要排队的情 况都可以理解成同步。那如果在程序中呢,我们都知道代码的执行是一行接着一行的,比如下面 这段代码: let ary = []; for ( let i

JS异步开发

↘锁芯ラ 提交于 2019-12-22 04:30:38
1,前言   众所周知,JS语言是单线程的,在实际的开发过程中,JS的同步操作会阻塞页面乃至整个浏览器的运行,在用户看来就是页面卡住,只有同步操作进行完毕之后才会进行其他的处理,这种同步等待的用户体验极差,所以JS中引入了异步编程思想,主要就是不阻塞主线程的运行,用户直观的感受就是页面不会卡住. 2,概念   2.1,浏览器的进程和线程    首先可以确定一点是浏览器是多进程的,比如打开多个窗口可能就对应着多个进程,这样可以确保的是页面之间相互没有影响,一个页面卡死也并不会影响其他的页面。同样对于浏览器进程来说,是多线程的,比如我们前端开发人员最需要了解的浏览器内核也就是浏览器的渲染进程,主要负责 页面渲染,脚本执行,事件处理 等任务。为了更好的引入JS单线程的概念,我们将浏览器内核中常用的几个线程简单介绍一下     (1):GUI渲染线程 负责渲染浏览器页面,解析html+css,构建DOM树,进行页面的布局和绘制操作,同事页面需要重绘或者印发回流时,都是该线程负责执行。     (2):JS引擎线程 JS引擎,负责解析和运行JS脚本,一个页面中永远都只有一个JS线程来负责运行JS程序,这就是我们常说的JS单线程         注意: JS引擎线程和GUI渲染线程永远都是互斥的,所以当我们的JS脚本运行时间过长时,或者有同步请求一直没返回时,页面的渲染操作就会阻塞

世界杯足球下注源码搭建下载

时间秒杀一切 提交于 2019-12-22 04:30:19
世界杯足球下注源码搭建 下载 http://hubawl.com 什么叫异步 异步(async) 是相对于 同步(sync) 而言的,很好理解。 同步 就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。而 异步 比如: setTimeout(function cbFn(){ console.log('learnInPro'); }, 1000); console.log('sync things'); setTimeout就是一个 异步任务 ,当JS引擎顺序执行到setTimeout的时候发现他是个异步任务,则会把这个任务挂起,继续执行后面的代码。直到1000ms后,回调函数cbFn才会执行,这就是异步,在执行到setTimeout的时候,JS并不会傻呵呵的等着1000ms执行cbFn回调函数,而是继续执行了后面的代码。 1.2 为啥要在JS中使用异步 由于javascript是 单线程 的,只能在JS引擎的主线程上运行的,所以js代码只能一行一行的执行,不能在同一时间执行多个js代码任务,这就导致如果有一段耗时较长的计算,或者是一个ajax请求等IO操作,如果没有异步的存在,就会出现用户长时间等待,并且由于当前任务还未完成,所以这时候所有的其他操作都会无响应。 1.3 那为啥JS不设计成多线程的 这主要跟javascript的历史有关

JS异步编程 (1)

大城市里の小女人 提交于 2019-12-22 04:29:59
JS异步编程 (1) 1.1 什么叫异步 异步(async) 是相对于 同步(sync) 而言的,很好理解。 同步 就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。而 异步 比如: setTimeout(function cbFn(){ console.log('learnInPro'); }, 1000); console.log('sync things'); setTimeout就是一个 异步任务 ,当JS引擎顺序执行到setTimeout的时候发现他是个异步任务,则会把这个任务挂起,继续执行后面的代码。直到1000ms后,回调函数cbFn才会执行,这就是异步,在执行到setTimeout的时候,JS并不会傻呵呵的等着1000ms执行cbFn回调函数,而是继续执行了后面的代码。 1.2 为啥要在JS中使用异步 由于javascript是 单线程 的,只能在JS引擎的主线程上运行的,所以js代码只能一行一行的执行,不能在同一时间执行多个js代码任务,这就导致如果有一段耗时较长的计算,或者是一个ajax请求等IO操作,如果没有异步的存在,就会出现用户长时间等待,并且由于当前任务还未完成,所以这时候所有的其他操作都会无响应。 1.3 那为啥JS不设计成多线程的 这主要跟javascript的历史有关,js最开始只是为了处理一些表单验证和DOM操作而被创造出来的

事件循环学习笔记

徘徊边缘 提交于 2019-12-22 04:29:43
JavaScript是单线程 JavaScript的单线程,与他的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM 。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如:假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这是浏览器不知道应该以哪个线程为准。 所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成为这门语言的核心特征,将来也不会改变。 为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。 任务队列 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就必须一直等着。 如果排队是因为计算量大,CUP忙不过来,倒也算了,但是很多时候CUP是闲着的,因为IO设为很慢,不得不等着结果出来,再往下执行。(IO设备指的是输入输出设备)(比如Ajax操作从网络读取数据很慢,页面等待数据读取成功后才会继续去执行后面代码。如果因为某些原因,数据很慢,这时后面的代码就不会被执行。) JavaScript语言的设计者意识到,这时主线程完全可以不管IO设备

什么是 Event Loop?

不问归期 提交于 2019-12-22 04:29:19
摘自:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一、为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。 JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。 为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。 二、任务队列 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。 如果排队是因为计算量大,CPU忙不过来,倒也算了,但是很多时候CPU是闲着的,因为IO设备(输入输出设备