我們知道 takeWhile 操作符在條件函數(shù)不滿足時(shí)立即觸發(fā)流的 complete 事件,所表現(xiàn)出來的效果就是點(diǎn)擊任何按鈕都不再有任何反應(yīng)。 當(dāng)我們點(diǎn)擊開始按鈕時(shí),定時(shí)器流...
我們知道 takeWhile 操作符在條件函數(shù)不滿足時(shí)立即觸發(fā)流的 complete 事件,所表現(xiàn)出來的效果就是點(diǎn)擊任何按鈕都不再有任何反應(yīng)。 當(dāng)我們點(diǎn)擊開始按鈕時(shí),定時(shí)器流...
之前的文章中我們介紹過了 scan 操作符,和 JavaScript 數(shù)組的 reduce 函數(shù)很像。其實(shí)在 RxJS 中也有 reduce 操作符??墒羌热灰呀?jīng)有了 sca...
書接上文,我們知道只要打開定時(shí)器,控制臺(tái)就會(huì)一直輸出內(nèi)容?,F(xiàn)在我們提出個(gè)小需求,只有在文本框輸入的內(nèi)容和定時(shí)器的值相等時(shí)才輸出。用 map 操作符當(dāng)然可以實(shí)現(xiàn),但最佳實(shí)踐是使...
之前文章介紹的例子都是處理一個(gè)流中的事件。然而在實(shí)際的業(yè)務(wù)中我們往往會(huì)遇到同時(shí)處理兩個(gè)流的需求。比如我們需要從兩個(gè)不同的 api 獲取數(shù)據(jù),然后合并數(shù)據(jù)在前端顯示等等。 首先...
今天我們來看看如何改變事件發(fā)生的頻率。讓我們添加兩個(gè)按鈕,分別代表了二分之一秒產(chǎn)生一個(gè)事件的事件流和四分之一秒產(chǎn)生一個(gè)事件的事件流。根據(jù)昨天的文章,我們可以想到用 merge...
今天我們來優(yōu)化一下之前的程序。在 scan 中我們以匿名函數(shù)的形式對(duì)一個(gè)對(duì)象的屬性了進(jìn)行了加 1 操作,我們可以把這個(gè)匿名函數(shù)變成具名函數(shù),這樣做更加靈活,復(fù)用性也更佳,對(duì)嗎...
昨天我們講到開始和停止一個(gè)事件流,回顧一下代碼: 現(xiàn)在的情況是,當(dāng)我們點(diǎn)擊停止按鈕后再次點(diǎn)擊開始按鈕,計(jì)數(shù)又是從 0 開始。如果我們想從停止時(shí)的數(shù)字繼續(xù)計(jì)數(shù)呢?按照常規(guī)的編程...
我們知道 Rx 是 push 模式。比如 1 秒產(chǎn)生一個(gè)事件的流,即使我們不去使用它,它也會(huì)產(chǎn)生事件。如何人為的停止這個(gè)流是今天我們要解決的問題。 先把場景搭建好,從頁面中得...
響應(yīng)式編程是一種思想,是一種模式,就像 if else 和 for while 一樣,是所有編程語言的基本單元。為什么會(huì)這樣類比?因?yàn)楝F(xiàn)在基本所有的編程語言都有了自己的 Rx...
一說到函數(shù)式編程,無論是在理論上還是實(shí)踐上,Haskell 肯定首先映入眼簾,F(xiàn)# 和 Scala 緊跟其后。如果你真想函數(shù)式編程,踏踏實(shí)實(shí)去學(xué)習(xí)上述三門語言吧。但是,函數(shù)式...
能否寫出高效的代碼,要看你對(duì)所使用的數(shù)據(jù)結(jié)構(gòu)的了解程度。實(shí)際上,當(dāng)你用一段程序解決一個(gè)問題時(shí),這段程序是否高效的因素之一就是是否選對(duì)了數(shù)據(jù)結(jié)構(gòu)來解決問題。這次我們就聊聊 li...