国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

angular 用Observable實(shí)現(xiàn)異步調(diào)用的方法

2024-05-06 15:43:48
字體:
供稿:網(wǎng)友

Observable(可觀察對(duì)象)

Observable(可觀察對(duì)象)是基于推送(Push)運(yùn)行時(shí)執(zhí)行(lazy)的多值集合。

拉取(Pull)和推送(Push)

拉取和推送是數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)消費(fèi)者之間通信的兩種不同機(jī)制。

拉取:在拉取系統(tǒng)中,總是由消費(fèi)者決定何時(shí)從生產(chǎn)者那里獲得數(shù)據(jù)。生產(chǎn)者對(duì)數(shù)據(jù)傳遞給消費(fèi)者的時(shí)間毫無感知(被動(dòng)的生產(chǎn)者,主動(dòng)的消費(fèi)者) 推送:在推送系統(tǒng)中生產(chǎn)者決定何時(shí)向消費(fèi)者傳遞數(shù)據(jù),消費(fèi)者對(duì)何時(shí)收到數(shù)據(jù)毫無感知(被動(dòng)的消費(fèi)者)

js中的Promise和Observable

現(xiàn)代JavaScript中Promise是典型的推送系統(tǒng)。作為數(shù)據(jù)生產(chǎn)者的Promise通過resolve()向數(shù)據(jù)消費(fèi)者——回調(diào)函數(shù)傳遞數(shù)據(jù):與函數(shù)不同,Promise決定向回調(diào)函數(shù)推送值的時(shí)間 RxJS在JavaScript中引入了Observable(可觀察對(duì)象)這個(gè)新的推送系統(tǒng)。Observable是多數(shù)據(jù)值的生產(chǎn)者,向Observer(被動(dòng)的消費(fèi)者)推送數(shù)據(jù)

Observable與函數(shù)、promsise

函數(shù)是當(dāng)調(diào)用才同步計(jì)算,并最終只返回一個(gè)值的 promise是會(huì)或者不會(huì)返回一個(gè)值 Observable是當(dāng)調(diào)用才同步或者異步地計(jì)算,并可能產(chǎn)生0到無窮多個(gè)值的

Observable是函數(shù)概念的拓展

Observable就像一個(gè)沒有參數(shù)的函數(shù),并不斷生成一些值供我們使用,因此它也像是一個(gè)事件發(fā)射機(jī)(EventEmitters) 在Observable中subscribe就像call一個(gè)函數(shù),你訂閱它,它才會(huì)被'啟動(dòng)'。同一個(gè)Observable對(duì)于不同的subscribe,是不會(huì)共享結(jié)果的(通常情況下這樣子的,但可以通過調(diào)用api來共享)

Observable四大核心

創(chuàng)建

Rx.Observable.create是Observable構(gòu)造函數(shù)的別名,接受一個(gè)參數(shù):subscribe函數(shù) 除了使用create創(chuàng)建Observable,我們通常還使用創(chuàng)建操作符, 如of,from,interval,等來創(chuàng)建Observable

訂閱

observable.subscribe和Observable.create(function subscribe(observer) {…})中的subscribe不是同一個(gè)對(duì)象,但在工程中可以在概念上視兩者為等價(jià)物 調(diào)用subscribe的觀察者并不會(huì)共享同一個(gè)Observable 訂閱機(jī)制與處理事件的addEventListener/removeEventListenerAPI完全不同。通過observable.subscribe,觀察者并不需要在Observable中進(jìn)行注冊(cè),Observable也不需要維護(hù)訂閱者的列表 訂閱后便進(jìn)入了Observable的執(zhí)行階段,在執(zhí)行階段值和事件將會(huì)被傳遞給觀察者供其消費(fèi)

執(zhí)行

只有在被訂閱之后Observable才會(huì)執(zhí)行,執(zhí)行的邏輯在Observable.create(function subscribe(observer){…})中描述,執(zhí)行后將會(huì)在特定時(shí)間段內(nèi),同步或者異步地成產(chǎn)多個(gè)數(shù)據(jù)值 Observable在執(zhí)行過程中,可以推送三種類型的值: “Next” 通知: 實(shí)際產(chǎn)生的數(shù)據(jù),包括數(shù)字、字符串、對(duì)象等 “Error” 通知:一個(gè)JavaScript錯(cuò)誤或者異常 “Complete” 通知:一個(gè)不帶有值的事件 在Observable的執(zhí)行過程中,0個(gè)或者多個(gè)“Next”通知會(huì)被推送 在錯(cuò)誤或者完成通知被推送后,Observable不會(huì)再推送任何其他通知
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 永年县| 临泉县| 永和县| 保亭| 子长县| 越西县| 寿光市| 阜新市| 彭州市| 健康| 邓州市| 攀枝花市| 福贡县| 九龙城区| 太仆寺旗| 鄱阳县| 莆田市| 抚州市| 霍州市| 舒兰市| 扬州市| 花莲县| 大冶市| 宜兰县| 婺源县| 从化市| 阿勒泰市| 太原市| 东港市| 丰台区| 安远县| 无棣县| 金乡县| 威海市| 亳州市| 堆龙德庆县| 梁山县| 淅川县| 罗山县| 合水县| 达州市|