場景:
專案中有乙個需求,發布故事線,發布會呼叫乙個介面,改介面返回進度條的必要資訊,進度資訊由mqtt推送過來,在正常網路情況下,介面返回速度應該比mqtt推送先一步完成,但是在網路慢的情況下,介面就遲於mqtt推送的速度。
(mqtt會推送多條訊息過來,執行多次)。這樣會造成進度條卡死的現象。
解決辦法:當有進度條例項時,直接執行進度條的方法,若沒有進度條例項時,將方法存到方法佇列內,待進度條例項建立時,執行佇列內的方法。完美解決mqtt後介面執行順序的問題。當然時機要把握好,我指的是執行佇列還是執行方法。看情況而定。
下面是一段**:
storypublishqueue.js
//故事線發布佇列
export function
storypublishqueue()
//出隊操作
this.pop = function
()
//獲取隊首
this.getfront = function
()
//獲取隊尾
this.getrear = function
()
//清空佇列
this.clear = function
()
//獲取隊長
this.size = function
()
//執行故事線發布佇列
this.trigger = function
()) arr = ;//
清空佇列
}}
掛在到vue例項例項上:
import from '@/utils/storypublishqueue.js';//故事線發布佇列
vue.prototype.storypublishqueue = new storypublishqueue();//
建立乙個發布故事線佇列例項
mqtt返回訊息內呼叫:
let vm = this; let queue = function
()
if(vm.$aiprogress.find ('storypush'))
else
介面內呼叫:
bus.$emit('storypush',);//建立進度條例項
if(this
.storypublishqueue.size())
JS 一天執行一次的方法
一天執行一次,很常用的場景,思路就是利用乙個標識,今天沒有這個標識就執行操作,然後新增標識,後續判斷標識存在就不再執行相應的操作。具體實現是新增乙個cookie,第一次沒有這個cookie,就執行操作,同時新增乙個到第二天凌晨過期的cookie。如下 function doone key,metho...
巢狀事務的一次實踐
最近在乙個專案中,需要實現自動對賬功能,收銀機會定時對比本地和遠端的訂單,遠端發現缺少的,會自動補全。所謂補全,就是批量插入缺失的訂單。基於這個場景,就存在乙個細節的問題,因為插入訂單涉及兩個表,如果某些情況下,乙個表插入失敗,訂單插入事務需要回滾。但是不能回滾之前插入的訂單資料,顯然這裡就設計子事...
一次元件化的實踐
更新 1.mvvm 可以將網路層轉移到viewmodel 層中,這樣就不需要將網路層抽離了,因為本來就沒和 控制器耦合。2.每次使用蜂巢的時候 控制器一定要實現 服務的協議,不然蜂巢會崩,還很難找到原因 3.蜂巢方案 雖然分離了控制器業務的耦合,但是引入了protocol 協議的耦合。同時需要維護 ...