關(guān)系:flutter框架使用響應(yīng)式編程設(shè)計
響應(yīng)式編程:專注于數(shù)據(jù)流和變化傳遞的異步編程范式
數(shù)據(jù)流:由一個發(fā)布者發(fā)布,一個/多個訂閱者消費(fèi)的數(shù)據(jù)元素序列
數(shù)據(jù)流流轉(zhuǎn)方式:1 pull 訂閱者向發(fā)布者索要數(shù)據(jù) 2 push 發(fā)布者向消費(fèi)者主動推送數(shù)據(jù)
數(shù)據(jù)流交互的問題:1 發(fā)布者發(fā)送數(shù)據(jù)快,訂閱者處理數(shù)據(jù)慢 2 發(fā)布者發(fā)送數(shù)據(jù)慢,訂閱者消費(fèi)數(shù)據(jù)快
解決方法:
異步處理,如果是同步,哪個快都會阻塞
1 背壓(發(fā)布快):1.1 損失數(shù)據(jù)? 1.2 緩存數(shù)據(jù)隊列
注:背壓的處理策略和觀察者模式的策略一樣,只是觀察者由訂閱者決定策略,背壓由訂閱者通知發(fā)布者降速,發(fā)布者決定策略。
2 非阻塞:訂閱者無消息處理掛起,切換到其他任務(wù)
響應(yīng)式流:背壓非阻塞異步流處理標(biāo)準(zhǔn)倡議
為什么使用響應(yīng)式:
1 響應(yīng)式流:背壓非阻塞異步流處理標(biāo)準(zhǔn)倡議
2 增強(qiáng)的觀察者和迭代器模式
3 流模型 3.1 訂閱者向發(fā)布者請求N個元素 3.2 發(fā)布者異步向訂閱者發(fā)送M(0<M<=N)個元素
4 pull模型和push模型動態(tài)切換,訂閱者快(push),發(fā)布者快(pull)
flutter數(shù)據(jù)流管理