JavaScript中回调函数的使用

在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。

在实际应用中,可以这么应用,一个方法进行获取数据源,另一个方法(回调函数)可以通过数据源在页面上进行展示,可以根据具体的需求进行展示就行,如果多个地方用到这个数据源,可以写不同的回调函数,将此函数传入这个方法中即可。

来,咱们通过实例可以一目了然

获取公司信息的小例子

1、获取公司信息数据源的方法(参数 url 为访问的地址,paramsObj为传递的参数对象,callback 为回调函数)

function getList(url, paramsObj, callback) {
        $.ajax({
            type: "Post",
            url: url,
            dataType: "json",
            data: JSON.stringify({
                paramsObj: JSON.stringify(paramsObj)
            }),
            contentType: "application/json;charset-utf-8",
            success: function (data) {
                callback(data);
            }
        });
    }

2、后台调用数据的方法

public class CompanyController : Controller
    {
        //
        // GET: /Company/

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult GetCompanyList(string paramsObj)
        {
            JavaScriptSerializer Serializer = new JavaScriptSerializer();
            var items = Serializer.Deserialize<Company>(paramsObj);

            List<Company> list = new List<Company>();
            list.Add(new Company { ID = 1, Name = "公司一" });
            list.Add(new Company { ID = 2, Name = "公司二" });
            list.Add(new Company { ID = 3, Name = "公司三" });

            return Json(list);
        }

    }

3、回调函数的方法,这里写了两个可以作为回调函数(一个用于将table展示到页面上,另一个以弹出框的形式展现)

function buildHtml(data) {
        var strHtml = "";
        strHtml += "<table>";
        for (var i = 0; i < data.length; i++) {
            strHtml += "<tr>";
            strHtml += "<td>" + data[i].ID + "</td>";
            strHtml += "<td>" + data[i].Name + "</td>";
            strHtml += "</tr>";
        }
        strHtml += "</table>";

        $("#divTable").html(strHtml);
    }
function alertHtml(data) {
        var strHtml = "";
        strHtml += "<table>";
        for (var i = 0; i < data.length; i++) {
            strHtml += "<tr>";
            strHtml += "<td>" + data[i].ID + "</td>";
            strHtml += "<td>" + data[i].Name + "</td>";
            strHtml += "</tr>";
        }
        strHtml += "</table>";

        alert(strHtml);
    }

4、页面调用

$(document).ready(function () {
        //get();

        var url = "/Company/GetCompanyList";
        var paramsObj = { ID: 3, Name: "ck" };

        var com = new Company(33, "123456");
        com.GetCompany(url, paramsObj);
    });

    function Company(ID,Name)
    {
        this.ID = ID;
        this.Name = Name;
    }
    Company.prototype.GetCompany = function (url, paramsObj) {

        getList(url, paramsObj, buildHtml);

        getList(url, paramsObj, alertHtml);
    }

最后整理一下,页面全部代码如下:

@{
    ViewBag.Title = "Index";
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>

<script type="text/javascript">

    $(document).ready(function () {
        //get();

        var url = "/Company/GetCompanyList";
        var paramsObj = { ID: 3, Name: "ck" };

        var com = new Company(33, "123456");
        com.GetCompany(url, paramsObj);
    });

    function Company(ID,Name)
    {
        this.ID = ID;
        this.Name = Name;
    }
    Company.prototype.GetCompany = function (url, paramsObj) {

        getList(url, paramsObj, buildHtml);

        getList(url, paramsObj, alertHtml);
    }

    function getList(url, paramsObj, callback) {
        $.ajax({
            type: "Post",
            url: url,
            dataType: "json",
            data: JSON.stringify({
                paramsObj: JSON.stringify(paramsObj)
            }),
            contentType: "application/json;charset-utf-8",
            success: function (data) {
                callback(data);
            }
        });
    }

    function buildHtml(data) {
        var strHtml = "";
        strHtml += "<table>";
        for (var i = 0; i < data.length; i++) {
            strHtml += "<tr>";
            strHtml += "<td>" + data[i].ID + "</td>";
            strHtml += "<td>" + data[i].Name + "</td>";
            strHtml += "</tr>";
        }
        strHtml += "</table>";

        $("#divTable").html(strHtml);
    }

    function alertHtml(data) {
        var strHtml = "";
        strHtml += "<table>";
        for (var i = 0; i < data.length; i++) {
            strHtml += "<tr>";
            strHtml += "<td>" + data[i].ID + "</td>";
            strHtml += "<td>" + data[i].Name + "</td>";
            strHtml += "</tr>";
        }
        strHtml += "</table>";

        alert(strHtml);
    }

</script>

<h2>Index</h2>

<div id="divTable" style="width:500px; height:300px;">

</div>

时间: 2025-01-01 21:12:31

JavaScript中回调函数的使用的相关文章

理解JavaScript中回调函数的使用

首先要理解function 对象,在JavaScript中function和array object,number一样作为一个对象,因此function也可以像普通对象一样可以作为一个参数传递个另一个函数; function parentF(callback){//callback可以任意定义名称,它只是个参数,此时并不能确定callback的类型(是number,object,function都不确定) var a=1; var b=2;  console.log("parent")

Javascript中回调函数的学习笔记

function a_b(kkis){ document.body.style.background ='red'; kkis(); } function fli(){ alert('############'); } a_b(fli);

告诉你什么是javascript的回调函数

在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply()函数的,或者有一些简短的关于callback的使用示例. 函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.Function对象包含一个字符串,字符串包

Javascript之回调函数(callback)

1.回调函数定义: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数.因此callb

javascript中所有函数的参数都是按值传递的

[javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

JavaScript中的函数表达式

在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表现形式,函数表达式(Function Expression, FE)有下面四个特点: 在代码中须出现在表达式的位置 有可选的函数名称 不会影响变量对象(VO) 在代码执行阶段创建 下面就通过一些例子来看看函数表达式的这四个特点. FE特点分析 例子一:在下面代码中,"add"是一个函数对象

JavaScript中valueOf函数与toString方法的使用

所有JS数据类型都拥有valueOf和toString这两个方法,null除外. JavaScript中valueOf函数方法是返回指定对象的原始值. 使用方法: object.valueOf( ). object是必选参数,是任意固有 JavaScrip对象. JavaScript 的 valueOf() 方法 valueOf() 方法可返回 Boolean 对象的原始值. 用法booleanObject.valueOf(),返回值为booleanObject 的原始布尔值.如果调用该方法的对

前端学习 第六弹: javascript中的函数与闭包

前端学习 第六弹:  javascript中的函数与闭包 当function里嵌套function时,内部的function可以访问外部function里的变量 function foo(x) {    var tmp = 3;    function bar(y) {        alert(x + y + (++tmp));    }    bar(10);}foo(2) 这时无论怎么运行输出的都是16,但这不是闭包 如果我们返回内部函数,内部function会close-over外部fu

C++中回调函数(CallBack)的使用

如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现成员函数可以访问C++的数据成员.这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员.由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调函数安装失败.要解决这一问题的关键就是不让t