淺析異步回調(diào)

最原始的寫法-同步寫法

所有操作同步單線進行

//最原始的寫法-同步寫法
 
f1(); //耗時很長,嚴重堵塞
f2(); //f2需要用用到f1
f3(); //導(dǎo)致f3執(zhí)行受到影響

異步回調(diào)

//改進版-異步寫法
function f1(callback){
  setTimeout(function () {
    // f1的任務(wù)代碼
    callback();
  }, 1000);
}
f1(f2); //
f3();

舉個例子

//舉例
var a=0;
var b=0;
function f1(){
  for(var i=0; i<100000000; i++){
  a += i;
  }
  b = a+1;
  console.log(a);
}
function f2(){console.log(b)}
function f3(){console.log('abc')}
f1()  //  4999999950000000  這一步拉長了時間
f2()  //  4999999950000001
f3()  //  abc  

需要等f1() f2()執(zhí)行完后才會輸出abc 如果f1()f2()執(zhí)行時間很長,f3()就會一直延遲

異步

這里因為f1()的執(zhí)行時間太長,所以將f1異步放到最后去執(zhí)行

var a=0;
var b=0;
function f1(callback){
  setTimeout(function(){   
    for(var i=0; i<100000000; i++){
    a += i;
    }
    b = a+1;
    console.log(a);
    callback()
  },0)
}
function f2(){console.log(b)}
function f3(){console.log('abc')}
f1()  // 最后出現(xiàn),用時很長 4999999950000000
f2()  // 0 
f3()  // abc

因為異步了,在執(zhí)行f2()的時候,a和b的值都是0,所以f2()最后是0,但這不是我們想要的結(jié)果,我們想同時不影響整個執(zhí)行,又要得到正確的f2()結(jié)果

異步回調(diào)

var a=0;
var b=0;
function f1(callback){
  setTimeout(function(){
    for(var i=0; i<100000000; i++){
      a += i;
    }
    b = a+1;
    console.log(a);
    callback()
  },0)
}
function f2(){console.log(b)}
function f3(){console.log('abc')}
f1(f2)
f3() //立刻輸出abc 然后過一段時間才輸出f1(f2) 4999999950000000 4999999950000001

按這樣的步驟理解起來應(yīng)該就比較清晰了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 一個剛?cè)肭岸说男〔耍m然以前看到過關(guān)于回調(diào)的文章,但是呢,理解起來有點費勁啊。當(dāng)時的腦海里就一個概念。 回調(diào)...
    夏風(fēng)輕語閱讀 488評論 1 2
  • 同步模式與異步模式 Javascript語言執(zhí)行環(huán)境是“單線程”,一次執(zhí)行一個任務(wù),并且按照順序依次執(zhí)行。但是遇到...
    你好趙大寶閱讀 178評論 0 0
  • 最近在學(xué)習(xí)node.js nodeJS的核心之一就是回調(diào)。之前理解一直概念不清。所以查了很多資料。以下是分享下個...
    奶爸Mr謝閱讀 2,219評論 1 2
  • 為什么會想寫一個關(guān)于JS的異步的一個系列呢?在不斷的學(xué)習(xí)之中,越發(fā)的讓我覺得,異步以及原型,可以說是JS最為重要的...
    aboyl閱讀 808評論 0 1
  • 不系漁舟照月眠,隨波浮沉任西東。 幕天席地人極樂,時立潮頭唱大風(fēng)。
    昆成閱讀 187評論 0 0

友情鏈接更多精彩內(nèi)容