所以我不太明白“回调”的意义。
这是回调的示例:
function sayBye(){
alert("Bye!");
}
function saySeeYou(){
alert("See you!");
}
function sayHello(name,myfunc){
alert("Hello");
myfunc;
}
sayHello("Max",saySeeYou());
当你可以调用函数时,传入函数有什么意义?就像这段代码的作用完全相同:
function sayBye(){
alert("Bye!");
}
function saySeeYou(){
alert("See you!");
}
function sayHello(name){
alert("Hello");
saySeeYou();
}
sayHello("Max");
最佳答案
Whats the point of passing in a function when you can just call the function?
通常,回调 Javascript 在 Javascript 中用于您希望将来运行的代码。最简单的例子是 setTimeout:如果您现在调用回调,那么代码会立即运行,而不是在 500 毫秒后运行。
//prints with a delay
console.log("Hello");
setTimeout(function(){
console.log("Bye");
}, 500);
//no delay this time
console.log("Hello");
console.log("Bye");
当然,如果我们能写一些类似的东西就太好了
//fake Javascript:
console.log("Hello");
wait(500);
console.log("Bye");
但遗憾的是 Javascript 不允许你这样做。 JavaScript 是严格单线程的,因此编写等待函数的唯一方法是暂停页面中任何脚本的执行 500 毫秒,这会将内容“卡住”在无响应状态。因此,需要很长时间才能完成的操作(例如超时或 AJAX 请求)通常使用回调在完成时发出信号,而不是阻塞执行并在完成后返回。
<小时/>顺便说一下,传递回调时,您应该只传递函数名称。如果添加括号,您将调用该函数并传递其返回值:
//When you write
foo(10, mycallback());
//You are actually doing
var res = mycallback();
foo(10, res);
//which will run things in the wrong order
关于Javascript 回调函数与仅调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195327/