Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaScript 回调函数

JavaScript 回调函数

作者头像
鱼找水需要时间
发布于 2023-02-16 08:03:29
发布于 2023-02-16 08:03:29
3.1K00
代码可运行
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程
运行总次数:0
代码可运行

函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回;

回调函数

回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。

回调,回调,不直接调用而是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。刚开始看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。

举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//定义主函数,回调函数作为参数
function A(callback) {
    callback();  
    console.log('我是主函数');      
}

//定义回调函数
function B(){
    setTimeout("console.log('我是回调函数')", 3000);//模仿网络请求耗时操作  
}

//调用主函数,将函数B传进去
A(B);

//输出结果
我是主函数
我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。

定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。

回调函数的作用

js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作(异步AJAX,文件加载,动态加载html等),这时候就需要用到回调函数,否则会找不到对象(附值,函数未加载完成)。

回调函数实际用例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function loadData(callback){
let param = {};

 $.ajax({
        type : "GET",
        url : 'xxx',
        contentType : "application/json; charset=utf-8",
        data : param,
        dataType : "json",
        success : function(result) {
            //假设这里逻辑非常复杂xxxxx,前台代码大约100行,直接写在这里可读性太低
            callback(result);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
			alert(XMLHttpRequest.status);
			alert(XMLHttpRequest.readyState);
			alert(textStatus);
		}
    });
}
function disposeResult(result){
	//根据请求的结果,处理数据
	console.log("请求结果是",result);
}

//调用
loadData(disposeResult);

loadData(disposeResult); 这里就是回调,disposeResult是实参,callback是形参,我们先调用loadData函数,等通过http网络请求 拿到我们需要的结果,再把请求结果当作参数传递给disposeResult函数去处理。 看到这里,聪明的你会不会发现ajax的success 不就是一个回调函数吗,我每天都在用ajax,为什么不懂什么是回调呢?

回调就是为了确保在网络请求耗时的情况下保证我们的代码执行有顺序的执行。

看到上述示例,你也会觉得回调也没什么用啊,我把disposeResult 函数里的代码写到 success 里去执行,效果不一样吗?是的 效果是一样的,但是你能确保你写的代码高可读,低耦合吗,一个ajax的success里我再套一个ajax,再加上前台处理的代码,一个方法上百行,过个十天半个月自己都看不懂。

高级使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//封装一个满足多次调用的方法
function loadData(callback, param){
 $.ajax({
        type : "GET",
        url : 'http://127.0.0.1:8080/getuser',  //获取用户的服务
        contentType : "application/json; charset=utf-8",
        data : param,
        dataType : "json",
        success : function(result) {
            //假设这里逻辑非常复杂xxxxx,前台代码大约100行
            callback(result);
        }
    });
}
// 获取所有用户,给页面赋值
function dispose1(data){
	console.log(data);
	// 你的前台业务代码
}
//获取单个用户
function dispose2(data){
	//这里也需要查询用户,怎么办?再写一个ajax?
	console.log(data);
}

function loadPage(){
	//获取所有用户,假设id为空或者不传id就是查所有的用户
	let param1 = {id: ""};
	loadData(dispose1, param1);
	
	// 获取单个用户
	let param2 = {id: "123"};
	loadData(dispose2, param2 );
}

欢迎大家学习交流!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javaScript回调函数
回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
用户6167509
2019/09/04
3.8K1
JavaScript回调函数
JavaScript的回调函数大概是JavaScript中使用最广泛的函数编程技术了,我们几乎可以在任何脚本中看到它的身影。
wade
2020/04/23
1.8K0
jQuery - Ajax详解分析(三)
回调函数 如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。 beforeSend 在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。 error 在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话) dataFilter 在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。 success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。 complete 当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。
用户7718188
2021/10/07
4000
JavaScript 高级应用(第二弹)
用来修改 this 指向的,如果默认值为 null 或者 undefined 的,那么 this 的值就会指向 window(游览器环境下)
Gorit
2022/01/25
6770
JavaScript 高级应用(第二弹)
了解 JavaScript 中的回调函数
在使用 JavaScript 时,我们经常会遇到需要多花一段时间才能完成的任务。这些任务可能是从外部源获取数据、处理大型数据集或处理用户交互。此类操作一旦处置不好的话,可能会造成延迟,导致应用程序反应迟钝或运行缓慢。为了有效管理这种情况,JavaScript 提供了一个称为回调函数的概念。
用户4235284
2023/11/02
8090
Ajax设置请求和接收响应、自己封装简易jQuery.Ajax、回调函数
这篇文章是承接前几篇博客的,是前几篇继续学习 包括Ajax学习与理解和简化版自己实现jQuery等 这篇文章只算是我的个人学习笔记,内容没有精心排版,一些错误请见谅.
代码之风
2018/10/31
2.8K0
JavaScript基础-异步编程:回调函数
在JavaScript中,异步编程是处理延迟操作(如网络请求、文件读写)的关键技术。回调函数作为异步编程的基本形式,是每个前端开发者必须掌握的概念。本文将深入浅出地介绍回调函数的基本原理、应用场景,以及在使用过程中常见的问题和易错点,并提供避免策略和实用代码示例,帮助开发者高效地驾驭异步逻辑。
Jimaks
2024/06/13
3140
JavaScript-回调函数
In computer programming, a callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time
小小工匠
2021/08/16
9920
JavaScript 如何用回调实现异步操作
在 JavaScript 中,异步编程是实现高效非阻塞操作的关键。为了理解 JavaScript 是如何通过回调函数实现异步操作的,我们需要深入探讨一些基础概念和机制。这个解释会涉及到 JavaScript 的事件循环、回调函数的定义和使用,以及一些具体的异步操作的例子。
8808.tw
2024/08/20
2980
jquery 操作ajax 相关方法
jQuery.get()   使用一个HTTP GET 请求从服务器加载数据。   jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [dtaType])     url 一个包含发送请求的URL     data 发送给服务器的字符串后键值对     success() 当请求成功时回调的函数     dataType 从服务器返回的预期数据。   用法:   $.get("test.cgi", { n
用户1197315
2018/01/19
3.5K0
jQuery的ajax详解
jQuery内部也封装了对原生ajax请求的方法,可以很方便我们的对后台异步请求处理。
老马
2018/07/31
2.6K0
前端异步(async)解决方案(所有方案)[通俗易懂]
javascript是一门单线程语言,即一次只能完成一个任务,若有多个任务要执行,则必须排队按照队列来执行(前一个任务完成,再执行下一个任务)。
全栈程序员站长
2022/09/18
2.6K0
前端异步(async)解决方案(所有方案)[通俗易懂]
JavaScript中的回调函数(callback)
被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。
刘亦枫
2020/03/19
7.9K0
Node.js 回调函数的原理、使用方法
在 Node.js 中,回调函数是一种常见的异步编程模式。它允许你在某个操作完成后执行特定的代码。回调函数在处理 I/O 操作、事件处理和异步任务时非常常见。本文将详细介绍 Node.js 回调函数的原理、使用方法和一些常见问题。
网络技术联盟站
2023/07/07
8030
JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一、AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术、改善用户体验,实现无刷新效
张果
2018/01/04
3.8K0
JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
无内鬼 整点AJAX
AJAX 即 “Asynchronous JavaScript and XML”(异步的 JavaScript 与 XML 技术),指的是一套综合了多项技术的浏览器端网页开发技术。AJAX 的概念由 Jesse James Garrett 所提出,说白了就可以使用 JavaScript 代码发送网络请求并处理响应,由浏览器实现。
henu_Newxc03
2021/12/26
5.3K0
JavaScript 框架学习(JQuery)
参考: http://www.w3cschool.cc/jquery/jquery-tutorial.html
lpe234
2020/07/28
8.2K0
JS实现的ajax和同源策略
其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象。所有的异步交互都是使用XMLHttpServlet对象完成的。也就是说,我们只需要学习一个Javascript的新对象即可。
用户1214487
2022/03/26
2.6K0
JS实现的ajax和同源策略
JavaScript 异步编程指南 — 事件与回调函数 Callback
这是一个系列文章,你可以关注公众号「五月君」订阅话题《JavaScript 异步编程指南》获取最新信息。
一只图雀
2021/06/17
2.5K0
JavaScript 异步编程指南 — 事件与回调函数 Callback
初学者必看Ajax的总结
image.png 整理 Ajax 的一些常用的基础知识,挺适合初学的朋友 一、Ajax 简介、优劣势、应用场景以及技术 Ajax 简介 : Asynchronous Javascript And XML (异步的 JavaScript 和 XML) 它并不是一种单一的技术,而是有机利用一系列交互式网页应用相关的技术所形成的结合体 AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更
沈唁
2018/05/24
2.9K0
相关推荐
javaScript回调函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验