首页
学习
活动
专区
圈层
工具
发布

《JS回调是怎么回事》 | 7月28日微课 文字版

这个问题我竟然一时无法回答,因为简单的说就一句话,当事件完成,或条件达成,或请求返回的时候执行的代码段,就应该算是回调了。当然这是我自己的理解。...回调相对比较适当的说明是这样: 1, 回调函数可以做为参数,用匿名函数的形式传递给另一个函数; 2, 当某个函数运行到某种状态时,符合相应条件时,触发的函数,就是回调函数。...然后当有数据从后端接口返回的时候,你之前预先在写好的处理返回数据的JS代码就可以自动发挥作用了。而在这期间,你并不必关心AJAX那一个部分的具体情况。...然后异步事件并不只有AJAX,还有鼠标点击某处的事件,页面滚动到哪里时的事件等等,你肯定会在这些事件里写一些JS函数了,这些函数就是回调函数。...因为JS内部机制看了之后,必须要靠代码量去加深理解。 而回调个话题就不再继续深入了。毕竟它是一个相对简单的技术点,大家先明白怎么用,为什么也就可以了。

1.3K100

ASP.NET 调味品:AJAX

术语可能有些混乱,但是当我介绍 AJAX 时,就是在介绍从客户端异步调用服务器端函数的整体框架。提到 Ajax.NET 时,我是指能够帮助您创建利用 AJAX 框架的解决方案的特定实现。...本文包含的示例 C# 和 Visual Basic .NET 项目可供下载,并提供工作代码和运行代码。在学习示例以前,首先需要了解如何安装和使用 Ajax.NET。...首先,我们将创建用户尝试编辑但无法编辑(因为其他用户正在编辑该文档)的文档队列,当这些文档可用时自动通知用户。其次,我们将确保当用户关闭其浏览器或导航到其他位置时,解除对文档的锁定。...接下来,我们将创建用户控件,该控件可以被放置到任何页上,用于当队列文档可用时通知用户。此用户控件将包含一个 AJAX 方法以及注册 AJAX 的类所需的代码。...当他不工作或不提供帮助时,他喜欢无情地清洁 Gnomish 灾难的 Azeroth。

5.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript是如何工作的:事件循环和异步编程的崛起+ 5种使用 asyncawait 更好地编码方式!

    在发布的第一篇文章中,思考了这样一个问题:当调用堆栈中有函数调用需要花费大量时间来处理时会发生什么? 例如,假设在浏览器中运行一个复杂的图像转换算法。...当调用堆栈有函数要执行时,浏览器不能做任何其他事情——它被阻塞了。这意味着浏览器不能渲染,不能运行任何其他代码,只是卡住了。那么你的应用 UI 界面就卡住了,用户体验也就不那么好了。...你可能知道标准 Ajax 请求不是同步完成的,这说明在代码执行时 Ajax(..) 函数还没有返回任何值来分配给变量 response。 一种等待异步函数返回的结果简单的方式就是 回调函数: ?...例如,当 JavaScript 程序发出 Ajax 请求从服务器获取一些数据时,在函数(“回调”)中设置“response”代码,JS引擎告诉宿主环境:"我现在要推迟执行,但当完成那个网络请求时,会返回一些数据...当这个函数返回一个值时,这个值只是一个普通值而已,这个函数内部将自动创建一个承诺,并使用函数返回的值进行解析。当这个函数抛出异常时,Promise 将被抛出的值拒绝。

    4.1K20

    基础 | 透彻掌握Promise的使用,读这篇就够了

    在ajax的原生实现中,利用了onreadystatechange事件,当该事件触发并且符合一定条件时,才能拿到我们想要的数据,之后我们才能开始处理数据。...上面的写法,是完全没有区分开,当数据变得复杂时,也许我们自己都无法轻松维护自己的代码了。这也是模块化过程中,必须要掌握的一个重要技能,请一定重视。...从前面几篇文中的知识我们可以知道,当我们想要确保某代码在谁谁之后执行时,我们可以利用函数调用栈,将我们想要执行的代码放入回调函数中。...现在所有的库几乎都将ajax请求利用Promise进行了封装,因此我们在使用jQuery等库中的ajax请求时,都可以利用Promise来让我们的代码更加优雅和简单。...我们接下来重点总结第一个常用的应用场景:ajax。 关于ajax的简单使用和简单封装,我们在上面都已经讲过了,这里就不再多说,直接使用jquery封装好的方法即可。

    69610

    jQuery的deferred对象详解

    ;     }   }); (运行代码示例1) 在上面的代码中,$.ajax()接受一个对象参数,这个对象包含两个方法:success方法指定操作成功后的回调函数,error方法指定操作失败后的回调函数...还是以上面的代码为例,如果ajax操作成功后,除了原来的回调函数,我还想再运行一个回调函数,怎么办? 很简单,直接把它加在后面就行了。   ...; }); (运行代码示例4) 这段代码的意思是,先执行两个操作$.ajax("test1.html")和$.ajax("test2.html"),如果都成功了,就运行done()指定的回调函数;...; }); (运行代码示例6) wait()函数运行完,就会自动运行done()方法指定的回调函数。...前面部分的ajax操作时,deferred对象会根据返回结果,自动改变自身的执行状态;但是,在wait()函数中,这个执行状态必须由程序员手动指定。

    1.6K60

    深度讲解TS:这样学TS,迟早进大厂【12】:声明文件

    TS系列地址: 21篇文章带你玩转ts 声明文件 当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。...function ajax 来声明函数,而不是使用 declare function ajax。...与 import 的区别是,当且仅当在以下几个场景下,我们才需要使用三斜线指令替代 import: 当我们在书写一个全局变量的声明文件时 当我们需要依赖一个全局变量的声明文件时 书写一个全局变量的声明文件...依赖一个全局变量的声明文件§ 在另一个场景下,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import 导入,当然也就必须使用三斜线指令来引入了29: // types/node-plugin...拆分声明文件§ 当我们的全局变量的声明文件太大时,可以通过拆分为多个文件,然后在一个入口文件中将它们一一引入,来提高代码的可维护性。

    6.4K51

    JSONP原理及使用

    JSONP原理 ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js...www.practice-zhao.com下,简单的输出一段json格式的数据 jsonhandle({ "age" : 15, "name": "John", }) 当访问前端代码http://www.practice.com...提示了不同源的URL禁止访问 2.下面使用JSONP,将前端代码中的ajax请求去掉,添加了一个script标签,标签的src指向了另一个域www.practice-zhao.com下的remote.js...")"; return; PHP代码返回了一段JS语句,即 jsonhandle({ "age" : 15, "name": "张三", }) 此时访问页面时,动态添加了一个script标签,src指向...所以JSONP将访问跨域请求变成了执行远程JS代码,服务端不再返回JSON格式的数据,而是返回了一段将JSON数据作为传入参数的函数执行代码。

    1K40

    JavaScript Async (异步)

    ,只要把一段代码包装成一个函数,并指定它在响应某个事件(定时器、鼠标点击、Ajax 响应等)时执行,就是在代码中创建了一个将来 执行的块,也由此在这个程序中引入了异步机制。...当定时器到时后,环境会把回调函数放在事件循环中,这样,在未来某个时刻的 tick 会摘下并执行这个回调。 所以换句话说就是,程序通常分成了很多小块,在事件循环队列中一个接一个地执行。...要正确地实现这一特性,需要(至少)两个独立的“进程”同时运行(也就是说,是在同一段时间内,并不需要在同一时刻)。...第一个“进程”在用户向下滚动页面触发 onscroll 事件时响应这些事件(发起 Ajax 请求要求新的内容)。第二个“进程”接收 Ajax 响应(把内容展示到页面)。...这里的重点不再是通过共享作用域中的值进行交互(尽管显然这也是允许的!)。

    84230

    基于 react 脚手架的react 应用

    说明 React 本身只关注于界面, 并不包含发送 ajax 请求的代码 前端应用需要通过 ajax 请求与后台进行交互(json 数据) react 应用中需要集成第三方 ajax 库(或自己封装)...常用的 ajax 请求库 jQuery: 比较重, 如果需要另外引入不建议使用 axios: 轻量级, 建议使用 a....封装 XmlHttpRequest 对象的 ajax b. promise 风格 c. 可以用在浏览器端和 node 服务器端 fetch: 原生函数, 但老版本浏览器不支持 a....不再使用 XmlHttpRequest 对象提交 ajax 请求 b....为了兼容低版本的浏览器, 可以引入兼容库 fetch.js 知识点总结 组件间通信 通过 props 传递 共同的数据放在父组件上, 特有的数据放在自己组件内部(state) 通过 props 可以传递一般数据和函数数据

    51520

    typescript声明文件:全局变量模块拆分自动生成声明文件

    声明文件当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。...书写声明文件当一个第三方库没有提供声明文件时,我们就需要自己书写声明文件了。...ajax 来声明函数,而不是使用 declare function ajax。...依赖一个全局变量的声明文件在另一个场景下,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import 导入,当然也就必须使用三斜线指令来引入了29:// types/node-plugin...拆分声明文件当我们的全局变量的声明文件太大时,可以通过拆分为多个文件,然后在一个入口文件中将它们一一引入,来提高代码的可维护性。

    4.4K11

    【TypeScript】008-声明文件

    9、声明文件 当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。...function ajax 来声明函数,而不是使用 declare function ajax。...与 import 的区别是,当且仅当在以下几个场景下,我们才需要使用三斜线指令替代 import: 当我们在书写一个全局变量的声明文件时 当我们需要依赖一个全局变量的声明文件时 书写一个全局变量的声明文件...依赖一个全局变量的声明文件 在另一个场景下,当我们需要依赖一个全局变量的声明文件时,由于全局变量不支持通过 import 导入,当然也就必须使用三斜线指令来引入了: // types/node-plugin...拆分声明文件 当我们的全局变量的声明文件太大时,可以通过拆分为多个文件,然后在一个入口文件中将它们一一引入,来提高代码的可维护性。

    65610

    详解Ajax请求(四)——多个异步请求的执行顺序

    首先提出一个问题:点击页面上一个按钮发送两个ajax请求,其中一个请求会不会等待另一个请求执行完毕之后再执行?   ...从异步请求的执行原理来看,我们知道当一个异步请求发送时,浏览器不会处于锁死、等待的状态,从一个异步请求发送到获取响应结果的期间,浏览器还可以进行其它的操作。这就意味着多个异步请求的执行时并行的。   ...要解决这个问题也不难,这里提供两种解决方案:   (1)Ajax2()方法的执行放到Ajax1()的success回调函数的最后一行。   ...(2)Ajax1()的异步请求方法中,增加一个回调函数 :complete : Ajax2 亲测可行   (3)当然针对这个问题而言还有很多解决办法,比如下拉列表采用同步的方式来画,而数据的回显使用异步...,或者一个异步请求把所有数据返回,然后按照逻辑顺序进行数据展示,这些就不再本文的讨论范围内了。

    3.6K30

    50道JavaScript基础面试题(附答案)

    当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。 6 栈和堆的区别?...闭包指的是一个函数可以访问另一个函数作用域中变量。常见的构造方法,是在一个函数内部定义另外一个函数。内部函数可以引用外层的变量;外层变量不会被垃圾回收机制回收。...18 javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么? 除了正常模式运行外,ECMAscript添加了第二种运行模式:“严格模式”。...作用: 1) 消除js不合理,不严谨地方,减少怪异行为 2) 消除代码运行的不安全之处, 3) 提高编译器的效率,增加运行速度 4) 为未来的js新版本做铺垫。...在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组。

    14.4K01

    JS异步编程

    为什么要使用异步 由于js是单线程的,只能在js引擎的主线程上运行,所以js代码只能一行一行的执行,如果没有异步的存在,由于当前的任务还没有完成,其他的所有操作都会无响应,用户就会长时间的在等待。...回调函数作为参数传递给另一个函数,在另一个函数中被调用。常见的回调函数的例子: ajax(url, () => { //处理逻辑 }) 但是使用回调函数,经常会写出回调地狱,这是非常致命的。...一旦状态从等待改变为其他状态就不再可变了。 Promise是个构造函数,接受一个函数作为参数。作为参数的函数有两个参数:resolve和reject,分别对应完成和拒绝两种状态。...执行Generator函数时,代码不会执行,而是需要调用Iterator遍历器对象的next方法,这时程序才会执行从头或从上一个yield到下一个yield或return或函数体尾部之间的代码,并将yield...2、当这个异步任务有了运行结果,Event Table会将这个回调函数移入Event Queue,进入等待状态。

    3.9K30

    JavaScript 异步编程

    在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。...而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。...所以,当一个事件没有结束时,界面将无法处理其他请求。 现在有一个按钮,如果我们设置它的 onclick 事件为一个死循环,那么当这个按钮按下,整个网页将失去响应。...// 主线程先执行 异步 AJAX 除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程。.../ajax_info.txt", true); xhr.send(); XMLHttpRequest 的 onload 和 onerror 属性都是函数,分别在它请求成功和请求失败时被调用。

    13210

    Ajax详解(拓展:利用Ajax实现用户名的校验)

    作用 通过异步模式,提升了用户体验 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 Ajax 在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。...地图 网页的其他功能 使用: ajax的访问原理 第一个ajax程序: 流程: 1、创建ajax引擎对象 2、声明监听函数...改动的参数就是上方的蓝色代码(第2-4个),分别为获取的输入框id,请求方式,url ajax的get请求附带请求数据的方式 ajax.open("get","my?...", "application/x-www-form-urlencoded"); ajax.send("method=login&uid=10");` 使用ajax时遇到的http响应码信息 1**:请求收到...Ajax 事件。注意函数要声明一个形参,用来接收响应数据。 type:请求方式,为ajax请求方式独有 async (Boolean) : (默认: true) 默认设置下,所有请求均为异步请求。

    1.6K10

    JavaScript 异步编程

    在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。...而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。...所以,当一个事件没有结束时,界面将无法处理其他请求。 现在有一个按钮,如果我们设置它的 onclick 事件为一个死循环,那么当这个按钮按下,整个网页将失去响应。...因为子线程独立于主线程,所以即使出现阻塞也不会影响主线程的运行。...; console.log("2"); 异步 AJAX 除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程。

    81530
    领券