基礎知識 -- (編程語言)

1.同步與異步

  • 同步和異步關注的是消息通信機制 (synchronous communication/ asynchronouscommunication);
  • 同步需要等待返回結果才能繼續,
  • 異步不必等待,一般需要監聽異步的結果


  • 所謂同步,就是在發出一個調用時,在沒有得到結果之前,該調用就不返回。但是一旦調用返回,就得到返回值了。

  • 換句話說,就是由調用者主動等待這個調用的結果
var output = fn1(fn2('input'));
// Do something.

這裏寫圖片描述
- 而異步則是相反,調用在發出之後,這個調用就直接返回了,所以沒有返回結果。
- 換句話說,當一個異步過程調用發出後,調用者不會立刻得到結果。而是在調用發出後,被調用者通過狀態、通知來通知調用者,或通過回調函數處理這個調用。

fn2('input', function (output2) {
    fn1(output2, function (output1) {
        // Do something.
    });
});

這裏寫圖片描述

舉個通俗的例子:

  • 你打電話問書店老闆有沒有《分佈式系統》這本書,如果是同步通信機制,書店老闆會說,你稍等,”我查一下”,然後開始查啊查,等查好了(可能是5秒,也可能是一天)告訴你結果(返回結果)。
  • 而異步通信機制,書店老闆直接告訴你我查一下啊,查好了打電話給你,然後直接掛電話了(不返回結果)。然後查好了,他會主動打電話給你。在這裏老闆通過“回電”這種方式來回調。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章