所以我理解回调本质上是传递给另一个函数并在以后执行的函数。
我也知道很多主要的库如jQuery都有效地使用回调,但是我想要一个简单的代码示例,并解释何时最好使用回调函数来解决问题。 到目前为止我看到的所有例子都是setTimeout,但是我想看一个新的例子来拓宽我对如何使用回调函数的想法。
如此亲切,我想看到 1.回调函数的一个例子。 2.为什么在这个例子中它将是一个合适的解决方案/方法 3.可能是使用回调的其他常见原因/场景。
非常感谢你!
答案 0 :(得分:2)
当你必须处理一个你不知道计算时间的函数(或方法)时,通常会使用回调。
例如,假设您需要从竖井中获取一些水来做某事,但您实际上并不知道此竖井离您家的位置和距离:您要求朋友(异步功能)善意走到竖井并为你取水,这样当他回来时就可以使用它。
同时,在等待水时,你可以做一些其他有用的事情。
一个基本的例子是:
function getWater(callback) {
// Walk to the shaft
// Take water
// Go back home
// This function is asynchronous
callback();
}
function useWater() {
// Do what you needed to do with water
}
getWater(useWater);
// While waiting to use the water:
doUsefulThings();
答案 1 :(得分:0)
函数是第一类对象,我们可以将函数作为参数传递给另一个函数,然后执行该传入函数,甚至将其返回以便稍后执行。这是在JavaScrip中使用回调函数的本质 JAVA SCRIPT回调
示例:
function test(data,function(datafromfunc){
//my function
});
内部服务功能
function(data,callback)
{
//your logic
callback(result)
}
示例2 // JavaScript回调函数
function randomize(min, max, callback) {
var random = Math.ceil(Math.random() * (min - max) + max);
callback(random);
}
randomize(5, 15, function(rndm) {
alert(rndm);
});
答案 2 :(得分:0)
在JavaScript中,我们可以像处理任何其他Functions
一样处理variables
。
也就是说,传统上我们编写的函数如下:
function sayHello(name){
console.log("Hello "+name);
}
然后调用它传递必要的参数:
sayHello("JavaScript");
这几乎就是我们在其他脚本语言中使用函数的方式。
但是,如果我告诉你,在JavaScript中,function
与variable
一样好,当我们调用函数时它可以作为参数传递?
例如:
var sayHello = function(name){ // My callback method
console.log(name);
};
function getNameAndSayHello(callback){
var name = 'My name is a Sandeep'; // I do some other things here...
//..........some other code.............
//..... when i am done with other things, i call the callback method...
callback(name);
}
getNameAndSayHello(sayHello);
正如您将看到的,我将sayHello
(函数)作为参数传递给另一个函数getNameAndSayHello
。简而言之,Functional Programming
的本质,虽然不是最纯粹的形式。
这种传递functions
的能力就像任何其他variable/value
一样,这使我们在以后适合我们时调用callback
非常方便。