本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種異步渲染模塊的同步方法及系統(tǒng)。
背景技術(shù):
目前,在前端模型-視圖-控制器(modelviewcontroller,簡(jiǎn)稱(chēng)mvc)模型的渲染中,如圖1所示,第一視圖(viewa)渲染完成后,需要把自己的數(shù)據(jù)發(fā)送事件給第二視圖(viewb),viewb監(jiān)聽(tīng)此事件,然后用viewa的數(shù)據(jù)來(lái)渲染其子視圖(subview)。
但是,由于viewa和viewb是異步渲染模塊,各自獨(dú)立請(qǐng)求服務(wù)器,數(shù)據(jù)返回的時(shí)間依賴(lài)網(wǎng)絡(luò),所以viewa和viewb渲染完成的先后順序不能保證。比如,當(dāng)viewa向viewb發(fā)送事件的時(shí)候,viewb很可能還在請(qǐng)求數(shù)據(jù),沒(méi)有渲染完成,也就是說(shuō)viewb沒(méi)有注冊(cè)與viewa相應(yīng)的事件,這樣,整個(gè)的頁(yè)面交互邏輯就失敗了。
鑒于此,如何解決異步渲染模塊的同步問(wèn)題,以保證執(zhí)行特定操作的時(shí)候,所有異步模塊都渲染完成,且所有數(shù)據(jù)都準(zhǔn)備妥當(dāng)成為目前需要解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為解決上述的技術(shù)問(wèn)題,本發(fā)明提供一種異步渲染模塊的同步方法及系統(tǒng),能夠解決異步渲染模塊的同步問(wèn)題,保證執(zhí)行特定操作的時(shí)候,所有異步模塊都渲染完成,且所有數(shù)據(jù)都準(zhǔn)備妥當(dāng)。
第一方面,本發(fā)明提供一種異步渲染模塊的同步方法,包括:
監(jiān)控模塊監(jiān)聽(tīng)當(dāng)前界面中的第一視圖的事件;
在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù),并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中;
判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至當(dāng)前界面中的第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
優(yōu)選地,所述方法還包括:
監(jiān)控模塊監(jiān)聽(tīng)當(dāng)前界面中的第二視圖的事件;
在接收到所述第二視圖發(fā)送的事件時(shí),調(diào)整自身的狀態(tài)參數(shù);
判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
優(yōu)選地,所述預(yù)設(shè)最大值為所述監(jiān)控模塊在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)和在接收到所述第二視圖發(fā)送的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)之后,所述狀態(tài)參數(shù)的值。
優(yōu)選地,在監(jiān)控模塊接收到第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件之前,所述方法還包括:
當(dāng)前界面中的第一視圖通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第一數(shù)據(jù)請(qǐng)求;
接收所述服務(wù)器根據(jù)所述第一數(shù)據(jù)請(qǐng)求返回的第一數(shù)據(jù);
根據(jù)所述第一數(shù)據(jù)對(duì)自身進(jìn)行渲染,并將攜帶所述第一數(shù)據(jù)的事件發(fā)送至監(jiān)控模塊。
優(yōu)選地,所述在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù),包括:
在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
優(yōu)選地,在監(jiān)控模塊接收到第二視圖發(fā)送的事件之前,所述方法還包括:
當(dāng)前界面中的第二視圖通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第二數(shù)據(jù)請(qǐng)求;
接收所述服務(wù)器根據(jù)所述第二數(shù)據(jù)請(qǐng)求返回的第二數(shù)據(jù);
根據(jù)所述第二數(shù)據(jù)對(duì)自身進(jìn)行渲染,并發(fā)送事件至監(jiān)控模塊。
優(yōu)選地,所述在接收到所述第二視圖發(fā)送的事件時(shí),調(diào)整自身的狀態(tài)參數(shù),包括:
在接收到所述第二視圖發(fā)送的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
第二方面,本發(fā)明提供一種異步渲染模塊的同步系統(tǒng),包括:
監(jiān)控模塊、當(dāng)前界面中的第一視圖和當(dāng)前界面中的第二視圖;
所述監(jiān)控模塊,包括:第一監(jiān)聽(tīng)單元、第一調(diào)整單元、第一判斷單元和第一發(fā)送單元;
所述第一監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)當(dāng)前界面中的第一視圖的事件;
所述第一調(diào)整單元,用于在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù),并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中;
所述第一判斷單元,用于判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
所述第一發(fā)送單元,用于若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至當(dāng)前界面中的第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
優(yōu)選地,所述監(jiān)控模塊,還包括:第二監(jiān)聽(tīng)單元、第二調(diào)整單元、第二判斷單元和第二發(fā)送單元;
第二監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)當(dāng)前界面中的第二視圖的事件;
第二調(diào)整單元,用于在接收到所述第二視圖發(fā)送的事件時(shí),調(diào)整自身的狀態(tài)參數(shù);
第二判斷單元,用于判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
第二發(fā)送單元,用于若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
優(yōu)選地,所述預(yù)設(shè)最大值為所述監(jiān)控模塊在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)和在接收到所述第二視圖發(fā)送的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)之后,所述狀態(tài)參數(shù)的值。
優(yōu)選地,所述系統(tǒng)還包括:服務(wù)器;
所述第一視圖,用于通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第一數(shù)據(jù)請(qǐng)求;接收所述服務(wù)器根據(jù)所述第一數(shù)據(jù)請(qǐng)求返回的第一數(shù)據(jù);根據(jù)所述第一數(shù)據(jù)對(duì)自身進(jìn)行渲染,并將攜帶所述第一數(shù)據(jù)的事件發(fā)送至監(jiān)控模塊。
優(yōu)選地,所述第一調(diào)整單元,具體用于
在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值,并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中。
優(yōu)選地,所述系統(tǒng)還包括:服務(wù)器;
所述第二視圖,用于通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第二數(shù)據(jù)請(qǐng)求;接收所述服務(wù)器根據(jù)所述第二數(shù)據(jù)請(qǐng)求返回的第二數(shù)據(jù);根據(jù)所述第二數(shù)據(jù)對(duì)自身進(jìn)行渲染,并發(fā)送事件至監(jiān)控模塊。
優(yōu)選地,所述第二調(diào)整單元,具體用于
在接收到所述第二視圖發(fā)送的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
由上述技術(shù)方案可知,本發(fā)明的異步渲染模塊的同步方法及系統(tǒng),能夠解決異步渲染模塊的同步問(wèn)題,保證執(zhí)行特定操作的時(shí)候,所有異步模塊都渲染完成,且所有數(shù)據(jù)都準(zhǔn)備妥當(dāng)。
附圖說(shuō)明
為了更清楚地說(shuō)明本公開(kāi)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本公開(kāi)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些圖獲得其他的附圖。
圖1是現(xiàn)有技術(shù)中異步渲染模塊同步的示意圖;
圖2是本公開(kāi)一實(shí)施例提供的一種異步渲染模塊的同步方法的流程示意圖;
圖3是本公開(kāi)另一實(shí)施例提供的一種異步渲染模塊的同步系統(tǒng)的結(jié)構(gòu)示意圖;
圖4是圖3所示異步渲染模塊的同步系統(tǒng)的初始態(tài)示意圖;
圖5是圖3所示異步渲染模塊的同步系統(tǒng)的中間態(tài)示意圖;
圖6是圖3所示異步渲染模塊的同步系統(tǒng)的最終態(tài)示意圖。
具體實(shí)施方式
下面將結(jié)合本公開(kāi)實(shí)施例中的附圖,對(duì)本公開(kāi)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本公開(kāi)一部分實(shí)施例,而不是全部的實(shí)施例?;诒竟_(kāi)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本公開(kāi)保護(hù)的范圍。
圖2是本公開(kāi)一實(shí)施例提供的一種異步渲染模塊的同步方法的流程示意圖,參照?qǐng)D2,該方法包括如下步驟:
s1、監(jiān)控模塊(monitor)監(jiān)聽(tīng)當(dāng)前界面中的第一視圖(viewa)的事件。
s2、在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù)(state),并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量(data)中。
具體地,本實(shí)施例的步驟s2中的“在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù)”,可以包括:
在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
在具體應(yīng)用中,舉例來(lái)說(shuō),所述初始值可以?xún)?yōu)選為0,所述第一預(yù)設(shè)值可以?xún)?yōu)選為1,所述預(yù)設(shè)最大值可以?xún)?yōu)選為2。
s3、判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù)。
s4、若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中 保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至當(dāng)前界面中的第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖(subview),并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
在具體應(yīng)用中,本實(shí)施例所述異步渲染模塊的同步方法,還包括圖中未示出的步驟p1-p4:
p1、監(jiān)控模塊監(jiān)聽(tīng)當(dāng)前界面中的第二視圖(viewb)的事件。
p2、在接收到所述第二視圖發(fā)送的事件時(shí),調(diào)整自身的狀態(tài)參數(shù)。
具體地,本實(shí)施例的步驟p2,可以包括:
在接收到所述第二視圖發(fā)送的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
p3、判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù)。
p4、若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
在本實(shí)施例中,所述預(yù)設(shè)最大值為所述監(jiān)控模塊在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)和在接收到所述第二視圖發(fā)送的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)之后,所述狀態(tài)參數(shù)的值。
在具體應(yīng)用中,在步驟s2之前,本實(shí)施例所述異步渲染模塊的同步方法,還包括:
當(dāng)前界面中的第一視圖通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第一數(shù)據(jù)請(qǐng)求;
接收所述服務(wù)器根據(jù)所述第一數(shù)據(jù)請(qǐng)求返回的第一數(shù)據(jù);
根據(jù)所述第一數(shù)據(jù)對(duì)自身進(jìn)行渲染,并將攜帶所述第一數(shù)據(jù)的事件發(fā)送至監(jiān)控模塊。
在具體應(yīng)用中,在步驟p2之前,本實(shí)施例所述異步渲染模塊的同步方法,還包括:
當(dāng)前界面中的第二視圖通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器發(fā)送第二數(shù)據(jù)請(qǐng)求;
接收所述服務(wù)器根據(jù)所述第二數(shù)據(jù)請(qǐng)求返回的第二數(shù)據(jù);
根據(jù)所述第二數(shù)據(jù)對(duì)自身進(jìn)行渲染,并發(fā)送事件至監(jiān)控模塊。
可理解的是,本實(shí)施例中的第一視圖(viewa)和第二視圖(viewb)是mvc模型中的視圖(view),mvc模型中的視圖負(fù)責(zé)請(qǐng)求數(shù)據(jù)和視圖渲染,它們有自己的模型(model),單獨(dú)請(qǐng)求服務(wù)器,服務(wù)器響應(yīng)后拿回?cái)?shù)據(jù)開(kāi)始渲染頁(yè)面;本實(shí)施例中的監(jiān)控模塊是本發(fā)明實(shí)施例的核心,負(fù)責(zé)狀態(tài)維護(hù)和數(shù)據(jù)暫存。在本實(shí)施例中,只有第一視圖或者第二視圖才能修改監(jiān)控模塊中的狀態(tài)參數(shù)state,只有state為預(yù)設(shè)最大值、且數(shù)據(jù)變量中保存有第一數(shù)據(jù)時(shí),才會(huì)渲染第二視圖的子視圖(subview),保證了渲染該子視圖的時(shí)機(jī)的正確性。
本實(shí)施例的異步渲染模塊的同步方法,能夠解決異步渲染模塊的同步問(wèn)題,保證執(zhí)行特定操作的時(shí)候,所有異步模塊都渲染完成,且所有數(shù)據(jù)都準(zhǔn)備妥當(dāng)。
圖3示出了本公開(kāi)另一實(shí)施例提供的一種異步渲染模塊的同步系統(tǒng)的結(jié)構(gòu)示意圖,參照?qǐng)D3,該系統(tǒng)包括:監(jiān)控模塊301、當(dāng)前界面中的第一視圖302和當(dāng)前界面中的第二視圖303;
所述監(jiān)控模塊,包括圖中未示出的:第一監(jiān)聽(tīng)單元、第一調(diào)整單元、第一判斷單元和第一發(fā)送單元;
所述第一監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)當(dāng)前界面中的第一視圖的事件;
所述第一調(diào)整單元,用于在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),調(diào)整自身的狀態(tài)參數(shù),并將所述第一數(shù)據(jù)保存到自身 的數(shù)據(jù)變量中;
所述第一判斷單元,用于判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
所述第一發(fā)送單元,用于若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至當(dāng)前界面中的第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
進(jìn)一步地,所述第一調(diào)整單元,可具體用于
在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值,并將所述第一數(shù)據(jù)保存到自身的數(shù)據(jù)變量中。
在具體應(yīng)用中,本實(shí)施例的監(jiān)控模塊301,還包括圖中未示出的:第二監(jiān)聽(tīng)單元、第二調(diào)整單元、第二判斷單元和第二發(fā)送單元;
所述第二監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)當(dāng)前界面中的第二視圖的事件;
所述第二調(diào)整單元,用于在接收到所述第二視圖發(fā)送的事件時(shí),調(diào)整自身的狀態(tài)參數(shù);
所述第二判斷單元,用于判斷此時(shí)調(diào)整后的狀態(tài)參數(shù)是否為預(yù)設(shè)最大值、及所述數(shù)據(jù)變量中是否保存有數(shù)據(jù);
所述第二發(fā)送單元,用于若此時(shí)調(diào)整后的狀態(tài)參數(shù)為預(yù)設(shè)最大值、且所述數(shù)據(jù)變量中保存有數(shù)據(jù),則將數(shù)據(jù)變量中保存的所述第一數(shù)據(jù)發(fā)送至第二視圖,以使所述第二視圖根據(jù)所述第一數(shù)據(jù)渲染其子視圖,并在所述第二視圖對(duì)其子視圖渲染完成之后,將所述狀態(tài)參數(shù)重置為初始值。
進(jìn)一步地,所述第二調(diào)整單元,可具體用于
在接收到所述第二視圖發(fā)送的事件時(shí),若自身的狀態(tài)參數(shù)為初始值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)榈谝活A(yù)設(shè)值,若所述狀態(tài)參數(shù)為所述第一預(yù)設(shè)值,則將所述狀態(tài)參數(shù)增加預(yù)設(shè)值變?yōu)轭A(yù)設(shè)最大值。
在本實(shí)施例中,所述預(yù)設(shè)最大值為所述監(jiān)控模塊在接收到所述第一視圖發(fā)送的攜帶第一數(shù)據(jù)的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)和在接收到所述第二視圖發(fā)送的事件時(shí)調(diào)整自身的狀態(tài)參數(shù)之后,所述狀態(tài)參數(shù)的值。
舉例來(lái)說(shuō),在本實(shí)施例中,所述初始值可以?xún)?yōu)選為0,所述第一預(yù)設(shè)值可以?xún)?yōu)選為1,所述預(yù)設(shè)最大值可以?xún)?yōu)選為2。
進(jìn)一步地,本實(shí)施例所述異步渲染模塊的同步系統(tǒng),還可以包括:服務(wù)器304;
所述第一視圖302,用于通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器304發(fā)送第一數(shù)據(jù)請(qǐng)求;接收所述服務(wù)器304根據(jù)所述第一數(shù)據(jù)請(qǐng)求返回的第一數(shù)據(jù);根據(jù)所述第一數(shù)據(jù)對(duì)自身進(jìn)行渲染,并將攜帶所述第一數(shù)據(jù)的事件發(fā)送至監(jiān)控模塊301。
進(jìn)一步地,所述第二視圖303,用于通過(guò)自己的數(shù)據(jù)倉(cāng)庫(kù)store,向服務(wù)器304發(fā)送第二數(shù)據(jù)請(qǐng)求;接收所述服務(wù)器304根據(jù)所述第二數(shù)據(jù)請(qǐng)求返回的第二數(shù)據(jù);根據(jù)所述第二數(shù)據(jù)對(duì)自身進(jìn)行渲染,并發(fā)送事件至監(jiān)控模塊301。
以所述初始值為0、所述第一預(yù)設(shè)值為1和所述預(yù)設(shè)最大值為2為例,本實(shí)施例所述異步渲染模塊的同步系統(tǒng)的初始態(tài)可參見(jiàn)圖4,中間態(tài)可參見(jiàn)圖5,最終態(tài)可參見(jiàn)圖6。
可理解的是,本實(shí)施例中的第一視圖(viewa)和第二視圖(viewb)是mvc模型中的視圖(view),負(fù)責(zé)請(qǐng)求數(shù)據(jù)和視圖渲染,它們有自己的模型(model),單獨(dú)請(qǐng)求服務(wù)器,服務(wù)器響應(yīng)后拿回?cái)?shù)據(jù)開(kāi)始渲染頁(yè)面;本實(shí)施例中的監(jiān)控模塊是本發(fā)明實(shí)施例的核心,負(fù)責(zé)狀態(tài)維護(hù)和數(shù)據(jù)暫存。在本實(shí)施例中,只有第一視圖或者第二視圖 才能修改監(jiān)控模塊中的狀態(tài)參數(shù)state,只有state為預(yù)設(shè)最大值、且數(shù)據(jù)變量中保存有第一數(shù)據(jù)時(shí),才會(huì)渲染第二視圖的子視圖(subview),保證了渲染該子視圖的時(shí)機(jī)的正確性。
本實(shí)施例的異步渲染模塊的同步系統(tǒng),能夠解決異步渲染模塊的同步問(wèn)題,保證執(zhí)行特定操作的時(shí)候,所有異步模塊都渲染完成,且所有數(shù)據(jù)都準(zhǔn)備妥當(dāng)。
對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
應(yīng)當(dāng)注意的是,在本公開(kāi)的系統(tǒng)的各個(gè)部件中,根據(jù)其要實(shí)現(xiàn)的功能而對(duì)其中的部件進(jìn)行了邏輯劃分,但是,本公開(kāi)不受限于此,可以根據(jù)需要對(duì)各個(gè)部件進(jìn)行重新劃分或者組合,例如,可以將一些部件組合為單個(gè)部件,或者可以將一些部件進(jìn)一步分解為更多的子部件。
本公開(kāi)的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器來(lái)實(shí)現(xiàn)根據(jù)本公開(kāi)實(shí)施例的系統(tǒng)中的一些或者全部部件的一些或者全部功能。本公開(kāi)還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者系統(tǒng)程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本公開(kāi)的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本公開(kāi)進(jìn)行說(shuō)明而不是對(duì)本公開(kāi)進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包括”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排 除存在多個(gè)這樣的元件。本公開(kāi)可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干系統(tǒng)的單元權(quán)利要求中,這些系統(tǒng)中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱(chēng)。
以上實(shí)施方式僅適于說(shuō)明本公開(kāi),而并非對(duì)本公開(kāi)的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本公開(kāi)的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本公開(kāi)的范疇,本公開(kāi)的專(zhuān)利保護(hù)范圍應(yīng)由權(quán)利要求限定。