国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

RxJS API解析(三)

banana_pi / 2441人閱讀

摘要:題外話服務(wù)可用性是指,服務(wù)提供者需要保證服務(wù)在任何時(shí)間情況下正確地提供。然后服務(wù)提供者,會(huì)將驗(yàn)證碼發(fā)送到用戶手機(jī)。

Rx* (Observable.catch)方法 方法定義

Rx.Observable.catch(...args)

作用

序列中可觀察對(duì)象因?yàn)楫惓6唤K止后,繼續(xù)訂閱序列中的其他可觀察對(duì)象。

參數(shù)

args (Array | arguments): 可觀察對(duì)象序列。

返回值

(Observable): 可觀察對(duì)象序列中能夠正確終止,不拋出異常的第一個(gè)可觀察對(duì)象。

寶珠圖

實(shí)例
var obs1 = Rx.Observable.throw(new Error("error"));
var obs2 = Rx.Observable.return(42);

var source = Rx.Observable.catch(obs1, obs2);

var subscription = source.subscribe(
  x => console.log(`onNext: ${x}`),
  e => console.log(`onError: ${e}`),
  () => console.log("onCompleted"));

// onNext: 42

在訂閱時(shí), obs1拋出錯(cuò)誤后,程序繼續(xù)執(zhí)行,轉(zhuǎn)而輸出沒有異常的obs2,并輸出obs2發(fā)射的值42。點(diǎn)擊進(jìn)入在線演示。

題外話

服務(wù)可用性是指,服務(wù)提供者需要保證服務(wù)在任何時(shí)間、情況下正確地提供。比如聯(lián)網(wǎng)的銀行系統(tǒng),用戶在各個(gè)ATM終端進(jìn)行提取現(xiàn)金等操作后,數(shù)據(jù)都會(huì)被及時(shí)同步和備份。當(dāng)不可抗因素發(fā)生時(shí),數(shù)據(jù)可以被盡快的通過(guò)備份恢復(fù)。通常這些解決方案被稱為災(zāi)備處理

使用云服務(wù),例如UcloudRedis服務(wù),可以在同一個(gè)服務(wù)上看到兩個(gè)不同地址訪問(wèn)地址,文檔描述如下:

每個(gè)云內(nèi)存存儲(chǔ)實(shí)例都會(huì)提供兩個(gè)IP進(jìn)行訪問(wèn)。

這兩個(gè)IP都可以對(duì)云內(nèi)存存儲(chǔ)實(shí)例進(jìn)行訪問(wèn),分布在不同的接入服務(wù)上,其作用在于,當(dāng)其中一個(gè)IP無(wú)法正常訪問(wèn)時(shí),仍有另一個(gè)IP可用,不會(huì)完全中止服務(wù)。

因此,應(yīng)用程序可以增加一個(gè)容災(zāi)切換的邏輯處理:將訪問(wèn)的IP列表設(shè)置好,默認(rèn)訪問(wèn)其中的一個(gè)IP,當(dāng)該IP無(wú)法訪問(wèn)時(shí),自動(dòng)切換到另一個(gè)IP繼續(xù)業(yè)務(wù)。

文檔中提到了增強(qiáng)服務(wù)可用性的線索:總是提供一組相同的服務(wù)而不是一個(gè)服務(wù),或者至少是相似的服務(wù),服務(wù)調(diào)用后可以完成相同的業(yè)務(wù)邏輯。
這個(gè)策略也是負(fù)載均衡的基礎(chǔ),可以緩解單個(gè)服務(wù)提供者的壓力,從用戶角度看,又感知不到服務(wù)的差異性:比如 多個(gè)HTTP服務(wù) 、_讀寫分離的數(shù)據(jù)庫(kù)_。

文末,舉一個(gè)實(shí)例:假設(shè)你需要做一個(gè)APP,APP中用戶在通過(guò)手機(jī)驗(yàn)證碼驗(yàn)證后,才能登錄賬戶。

許多第三方服務(wù)提供商,都提供手機(jī)驗(yàn)證服務(wù),比如_LeanCloud_,調(diào)用者像服務(wù)提供方發(fā)送POST請(qǐng)求,請(qǐng)求的body為用戶手機(jī)號(hào)碼。然后服務(wù)提供者,會(huì)將驗(yàn)證碼發(fā)送到用戶手機(jī)。用戶在收到驗(yàn)證碼后,通過(guò)表單,輸入驗(yàn)證碼,提交后,調(diào)用者再次向服務(wù)提供商發(fā)起POST請(qǐng)求,請(qǐng)求的body為用戶輸入的驗(yàn)證碼然后等待服務(wù)提供商響應(yīng)。

當(dāng)然,某些情況下,服務(wù)提供商可能自己掛了,或者是不支持向某個(gè)號(hào)碼所屬的運(yùn)營(yíng)商提供服務(wù);還有些情況下,用戶的號(hào)碼可能在某個(gè)服務(wù)提供商的黑名單中。比如:你的一個(gè)用戶是 經(jīng)常寫競(jìng)品分析的產(chǎn)品經(jīng)理 ,可能也許大概你的號(hào)碼就在某個(gè)服務(wù)提供商的黑名單中。

我們往往要同時(shí)接入多個(gè)服務(wù)提供商的短信驗(yàn)證服務(wù),保證用戶能夠正常通過(guò)我們的注冊(cè)(登錄)流程:

回到catch()函數(shù),結(jié)合定義我們可以把一個(gè)提供商作為主要服務(wù)提供者,如果其不能提供服務(wù)(調(diào)用失敗),我們可以選擇第二家作為候選:

var service1 = Observable.create("服務(wù)提供商#1");
var service2 = Observable.create("服務(wù)提供商#1");

Observable.catch(service1, service2).subscribe({
    ()=>console.log("succeed"),
    ()=>console.log("所有驗(yàn)證服務(wù)均不可用")
    ()=>console.log("completed")
})

這樣,用戶能夠收到驗(yàn)證碼并成功驗(yàn)證的幾率大大增加。

劇終

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78502.html

相關(guān)文章

  • RxJS API解析(一)

    摘要:選擇后,僅有聯(lián)通的可觀察對(duì)象會(huì)被觀察到。從外部看,所有訂閱者僅能觀測(cè)到這個(gè)聯(lián)通了支流。,其中表示輸入流,是操作符,是最后的輸出流。截圖驗(yàn)證一下當(dāng)一個(gè)流被聯(lián)通后,其他的流腫么辦先記住結(jié)論未被選擇的流將被調(diào)用方法,也就是說(shuō),他們被終止了。 起因 在SegmentFault里發(fā)布過(guò)一篇RxJS的簡(jiǎn)明教程,很多人反饋對(duì)這個(gè)主題很是很感興趣,詳見RxJS簡(jiǎn)明教程。 Rx 是一種編程的思維,而不是...

    姘擱『 評(píng)論0 收藏0
  • RxJS API解析(四)

    摘要:任何程序設(shè)計(jì)語(yǔ)言在講解遞歸特性時(shí),基本都會(huì)舉漢諾塔斐波拉契數(shù)列的例子。沒錯(cuò),請(qǐng)你對(duì)比一下斐波拉契數(shù)列和定義的相似之處遞歸完成后產(chǎn)生值的過(guò)程就是的過(guò)程。 Rx*(Observable.combineLatest)方法 方法定義 Rx.Observable.combineLatest(...args, [resultSelector]) 作用 通過(guò)處理函數(shù)總是將指定的可觀察對(duì)象序列中最新發(fā)...

    cheng10 評(píng)論0 收藏0
  • RxJS API解析(二)

    摘要:當(dāng)無(wú)法匹配時(shí),該對(duì)象被默認(rèn)返回。如果沒有明確指定,將返回附加了指定的對(duì)象。返回值返回值為經(jīng)過(guò)選擇后的可觀察對(duì)象。題外話鍵值對(duì),可以對(duì)值進(jìn)行命名。鍵值對(duì)是對(duì)象的組成部分,鍵名可以方便進(jìn)行查找和比較操作。 Rx* (Observable.case)方法 方法定義 [Rx.Observable.case(selector, sources, [elseSource|scheduler])] ...

    chanthuang 評(píng)論0 收藏0
  • Rxjs 響應(yīng)式編程-第二章:序列的深入研究

    摘要:接下來(lái),我們將實(shí)現(xiàn)一個(gè)真實(shí)的應(yīng)用程序,顯示幾乎實(shí)時(shí)發(fā)生的地震。得到的由表示,其中包含和的合并元素。如果不同同時(shí)傳出元素,合并序列中這些元素的順序是隨機(jī)的。是操作序列的強(qiáng)大操作符。但是的方法仍在運(yùn)行,表明取消并不會(huì)取消關(guān)聯(lián)的。 Rxjs 響應(yīng)式編程-第一章:響應(yīng)式Rxjs 響應(yīng)式編程-第二章:序列的深入研究Rxjs 響應(yīng)式編程-第三章: 構(gòu)建并發(fā)程序Rxjs 響應(yīng)式編程-第四章 構(gòu)建完整...

    姘擱『 評(píng)論0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件開發(fā)前端掘金作者原文地址譯者插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實(shí)現(xiàn)文件分片斷點(diǎn)續(xù)傳。 Vue.js 插件開發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。插....

    izhuhaodev 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<