js 回調 同步回調 異步回調


一、回調
回調來說有一個關鍵詞:函數參數,即把函數A當做參數傳遞到另一個函數B之中,這樣當B(A)時,在B中會“”回過頭“”再調用函數A(),把函數A叫做回調函數。
為了更方便的記憶:請記住 函數參數 回過頭再調用。
二、首先先看一下沒有用回調的情形

function f1() {
  var name = prompt('請輸入你的名字。');
  return name
}

function f2(name) {
  alert('Hello ' + name);
}

var name = f1()
f2(name)
log(333333333)
上述代碼先執行f1,再執行f2,如果f1需要消耗很長時間來執行,f2需要等待,故是同步操作,且沒有用到回調。最后執行log(333333333)

三 、同步回調 的情形

function f2(name) {
  alert('Hello ' + name);
}

function f1(callback) {
  var name = prompt('請輸入你的名字。');
  callback(name);
}
f1(f2);
log(222222222222)
上述代碼,f2作為f1的回調函數,執行的時候,按順序執行f1內的部分,f1執行到f2時,執行f2,再一次執行f1內剩下的部分,此時同樣是同步操作。最后執行log(222222222222)

四、異步回調的情形

function f2(name) {
  alert('Hello ' + name);
}

function f1(callback) {
  setTimeout(function () {
    var name = prompt('請輸入你的名字。');
    callback(name);
    }, 10000);
}
f1(f2);
log(11111111111111)
此時f1內多了setTimeout函數,作用:延遲10000執行該函數內function部分。

注意:此時實驗結果:是首先執行log(11111111111111),當延遲10000之后,執行function,再回調f2,此時是異步操作。

文獻:
http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html Javascript異步編程的4種方法
https://developer.mozilla.org/zh-CN/docs/Glossary/Callback_function 回調函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM