美文网首页
javascript callback() 回调函数

javascript callback() 回调函数

作者: _士心_ | 来源:发表于2016-10-05 20:04 被阅读2042次

reference article

function httpRequest(url,callback){
    // httpRequest不是阻塞函数  简单点说就是不会阻止下面的函数执行
    //用回调函数去解决
    var xhr = new XMlHttpRequest();
    xhr.open("GET",url,ture);
    xhr.onreadystatechange = function(){
        if (xhr.readyState ==4) {
            callback(xhr.responseText);
        };
    }
    xhr.send();
}
var text;
httpRequest("text.txt", function(result){
    text = result;
    console.log(text);
})

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

这是js里的解释了,字面上理解下来就是

回调就是一个函数的调用过程

那么就从理解这个调用过程开始吧。函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。
其实中文也很好理解:回调,回调,就是回头调用的意思。函数a的事先干完,回头再调用函数b。
举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。
其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。
这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。
也许有人有疑问了:一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?确实可以。

解惑:如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){...;b();}就失去了变量的灵活性

i think this callback only is a design mode of coding

下面用代码来证实我的理解。

<html>   
   
<head>   
   
<title>回调函数(callback)</title>   
<script language="javascript" type="text/javascript">   
function a(callback)   
{      
   alert("我是parent函数a!");   
    alert("调用回调函数");   
    callback();   
}   
function b(){   
alert("我是回调函数b");   
  
}   
function c(){   
alert("我是回调函数c");   
  
}   
  
function test()   
{   
    a(b);   
   a(c);   
}   
  
</script>   
</head>   
   
<body>   
<h1>学习js回调函数</h1>   
<button onClick=test()>click me</button>   
<p>应该能看到调用了两个回调函数</p>    
</body>   
   
</html>  

相关文章

网友评论

      本文标题:javascript callback() 回调函数

      本文链接:https://www.haomeiwen.com/subject/flexdttx.html