gpt4 book ai didi

javascript - 使用回调函数与仅在函数内插入函数相比有什么好处

转载 作者:行者123 更新时间:2023-11-28 20:16:53 26 4
gpt4 key购买 nike

我一直在阅读有关回调函数的内容,并正在尝试使用它。但我没有看到它的好处。以我下面的代码为例,我看不出 #1 和 #2 之间的区别。相反,#1 似乎毫无意义

1:

function serverConnect(callback){
//Connecting to server
var xmlhttp;
var getString;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

var url="server/topHouses.php";
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
//Storing response from server, an array encoded by json
getString = $.parseJSON(xmlhttp.responseText);
callback(getString);

}
}

xmlhttp.send();
}

function doStuff(string){
//do stuff
}

serverConnect(doStuff);

2:

function serverConnect(){
//skip skip skip
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
//Storing response from server, an array encoded by json
getString = $.parseJSON(xmlhttp.responseText);
doStuff(getString);

}
}

function doStuff(string){
//do stuff
}

serverConnect();

最佳答案

对于你的例子来说,并没有太大的好处,至少从我看来是这样。这就是回调方法作为参数的用处。

myFunction(successCallback)
{
var url="server/topHouses.php";
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState==4 && xmlhttp.status==200) {
if(!successCallback)
// Some default behavior
else
successCallback($.parseJSON(xmlhttp.responseText));
}
};
}

通过允许您或其他开发人员覆盖成功行为,它可以为您的应用程序提供更大的灵 active ,而不会牺牲让方法以标准化方式处理事物的便利性。

顺便说一句,如果您使用 jQuery(如 $.parseJSON 调用所示),为什么要使用 xmlhttp 而不是 $.ajax?

关于javascript - 使用回调函数与仅在函数内插入函数相比有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com