[英]callback function vs calling a function from inside the function
我試圖理解JS,並且對回調模式感到困惑。
function one(){
alert("I'm one!")
}
function total(arg, callback){
setTimeout(function() {alert("I'm "+arg);}, 1000);
callback();
}
total('all', one);
與
function one(){
alert("I'm one!")
}
function total(arg){
setTimeout(function() {alert("I'm "+arg);}, 1000);
one();
}
total('all');
將one()
作為參數傳遞而不是僅從函數內部調用它有什么好處?
如果您知道總是要調用one
,則無需接受它作為輸入參數; 您可以繼續撥打電話。
接受回調的功能使您可以輕松編寫松耦合的代碼。
例如,您正在代碼示例中將回調傳遞給setTimeout
。 setTimeout
知道在調用函數之前要等待給定的毫秒數,但是它不知道要調用哪個函數。
傳遞回調函數使您可以動態影響程序的流程。 另外,您可以將total
的結果作為參數傳遞給callback
,該參數通常用於啟用異步編程。
function one(){
alert("I'm one!")
}
function total(arg, callback){
setTimeout(function() {
if (callback) {
callback();
}
}, 1000);
}
我懷疑您的示例不是用來說明回調是什么。 這更有意義嗎?
function cb(arg){
alert("I'm "+arg+"!")
}
function total(arg, callback){
setTimeout(callback, 1000, arg);
}
total('one', cb);
回調參數允許您定義自定義交互。 它通常與任何異步操作一起使用,以允許對狀態更改做出反應(例如,當操作完成或出錯時)。
其中一個示例可能是AJAX調用(此處為簡化起見,使用jQuery):
var request = $.ajax({
url: "script.php"
});
// this allows you to specify custom action handling
request.done(one);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.