乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      rxjs Observable 設(shè)計(jì)原理背后的 Pull 和 Push 思路

       汪子熙 2022-05-24 發(fā)布于四川

      Observables 顧名思義,是可以被觀察的事務(wù)。在 Rxjs 的上下文里,Observable 會隨著時間的推移,在某個時間點(diǎn)產(chǎn)生數(shù)據(jù)。

      Observables 可以:

      • 不停地(永遠(yuǎn))產(chǎn)生值,比如 interval 操作符。

      • 可以一次性生產(chǎn)價值,然后進(jìn)入 complete 狀態(tài)。

      • 可能會產(chǎn)生錯誤,然后進(jìn)入 complete 狀態(tài)。

      Observable 是一種異步事件的實(shí)現(xiàn)利器,例如單個操作(HTTP 請求)或多個可重復(fù)的操作(例如光標(biāo)移動或按鍵)。

      響應(yīng)式編程(Reactive Programming)是一種構(gòu)建應(yīng)用程序的方法,它對應(yīng)用程序內(nèi)發(fā)生的變化做出響應(yīng),而不是編寫應(yīng)用程序來處理這些變化。后者是 Imperative Programming 即命令式編程的典型特征。

      要理解 Observable 的設(shè)計(jì)原理,我們首先有必要了解典型的生產(chǎn)者和消費(fèi)者通信的幾種模式。

      拉取(Pull)和推送(Push)模型定義了數(shù)據(jù)生產(chǎn)者如何與數(shù)據(jù)消費(fèi)者合作。

      Pull

      拉?。涸诶∧P偷那闆r下,消費(fèi)者決定何時使用或請求數(shù)據(jù)。 當(dāng)我們創(chuàng)建一個返回值的函數(shù)時,該函數(shù)就是生產(chǎn)者。 但是,在調(diào)用該函數(shù)(或要求提供數(shù)據(jù))之前,該函數(shù)不會產(chǎn)生任何內(nèi)容。

      調(diào)用函數(shù)的代碼是消費(fèi)者。 此調(diào)用按照消費(fèi)者的需求被觸發(fā)。 消費(fèi)者決定傳播策略。

      Push

      推送:生產(chǎn)者主導(dǎo)推模型。 任何使用數(shù)據(jù)的人都不知道數(shù)據(jù)何時到達(dá)。 他們知道數(shù)據(jù)到達(dá)時要做的應(yīng)用邏輯,但消費(fèi)者不決定數(shù)據(jù)何時到達(dá)。

      Promise 是推送模型的經(jīng)典示例。 當(dāng)任務(wù)完成時,promise 會產(chǎn)生數(shù)據(jù)或錯誤。 傳遞給 Promise 的回調(diào)函數(shù)永遠(yuǎn)不會知道 Promise 何時完成,它只負(fù)責(zé)數(shù)據(jù)成功達(dá)到或者發(fā)生錯誤時,應(yīng)該執(zhí)行什么樣的邏輯。

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多