只是一个在调用它的另一个函数之后执行的函数,完成?
请问我几乎没有关于编程的东西,而且我觉得很难找到一个正确的新手答案或解释这是什么意思.
我可以从stackoverflow gurus请求一个尝试吗?
解决方法
一般来说,一旦您调用的另一个函数完成,就会使用回调函数(就像您在问题中所述).一个很好的例子是
AJAX请求:大多数库都有一个功能,允许您在后台发送请求到服务器,而不刷新页面(这使用AJAX).您通常为此AJAX函数提供两个回调函数:成功函数和失败函数.
如果此请求成功,它将调用成功函数,以便您的代码可以执行所需的操作;例如,它可能刷新页面的一部分,执行某种动画,或提醒用户他们的信息被保存.另一方面,如果失败,回调函数可能会提醒用户他们的数据未被保存,并且应该再次尝试.
回调函数允许库开发人员创建非常通用的代码,其他人可以使用,然后根据自己的需要进行自定义.
以下是一些jQuery代码,以显示您上面的示例(此代码将不起作用,URL不存在):
jQuery.ajax( url: '/mywebsite/somepage.PHP',success: function itWorked(returnedData) { // This is the success function and will be called only if the ajax call // completes succesfully alert('Yay it worked! ' + returnedData); },error: function itFailed(originalRequest,textStatus,errorThrown) { // This is the error function and will only be called if the ajax call // has an error alert('It Failed! ' + textStatus + '. ' + errorThrown); } );
编辑:起初,我说:“一般……”.实际上,回调比函数完成时更多使用.像其他答案一样,它可以在函数的任何地方使用:开始,中间和结尾.基本思想是代码开发人员可能不知道您将如何使用HIS代码.所以,他使它非常通用,让你有能力做任何你需要的数据.
一个很好的例子是jQuery.each方法,它允许您传递将在“数组”中的每个元素执行的回调(我说数组,因为它可以实际上迭代许多可能或可能不是实际的事情阵列).
<a href='someurl.html' class='special_link'>Some URL</a> <a href='anotherurl.html' class='special_link'>Another URL</a> <a href='onelasturl.html' class='special_link'>One Last URL</a> // The following code says: execute the myEachCallbackFunction on every link // that has a class of 'special_link' $('a.special_link').each(function myEachCallbackFunction(i) { // The link variable will contain the object that is currently // being iterated over. So,the first time through,it will hold // the 'someurl.html' link,the second time it will hold the // 'anotherurl.html' link,and the last time it will hold the // 'onelasturl.html' link var link = $(this); // Change the background color of each link to be red link.css('background-color','red'); });
因此,我们可以从这个例子中看出,jQuery的开发人员实现了.each方法,并允许我们对所调用的每个链接进行任何我们想要的操作.