專利名稱:一種響應(yīng)消息的執(zhí)行方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)頁開發(fā)領(lǐng)域,特別是涉及一種響應(yīng)消息的執(zhí)行方法和裝置。
背景技術(shù):
AJAX ( Asynchronous JavaScript and XML,異步JavaScript和XML )
是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。在交互式網(wǎng)頁的操作過程中, 當客戶端的一個操作分別向服務(wù)器端發(fā)送了多個AJAX請求時,服務(wù)器端作 為服務(wù)的提供者,隨時接收AJAX請求,待處理完AJAX請求后再將響應(yīng)消 息發(fā)送到客戶端。但是,由于服務(wù)器端的處理速度以及網(wǎng)絡(luò)等因素,有可能 會將后接收到的AJAX請求先處理完并將響應(yīng)消息先發(fā)送給客戶端,而將先 接收到的AJAX請求后處理完并將響應(yīng)消息后發(fā)送給客戶端,從而會使客戶 端不能夠按照發(fā)送AJAX請求的順序去執(zhí)行AJAX請求的響應(yīng)消息,進而導(dǎo) 致業(yè)務(wù)處理發(fā)生邏輯錯誤。
例如當業(yè)務(wù)系統(tǒng)中需要提交一張單據(jù)時,客戶端發(fā)送2個AJAX請求 給服務(wù)器端。其中,第1個AJAX請求要求服務(wù)器端將單據(jù)結(jié)果保存到數(shù)據(jù) 庫,第2個AJAX請求要求服務(wù)器端選中界面上單據(jù)列表組件中新增加的這 張單據(jù)。如果服務(wù)器端對第1個AJAX請求所需要做的處理比較復(fù)雜,對第2 個AJAX請求所需要做的處理比較簡單,那么第2個AJAX請求的響應(yīng)消息 就會在第1個AJAX請求的響應(yīng)消息之前返回,此時界面上的表格中還沒有 出現(xiàn)剛剛新增的單據(jù),從而導(dǎo)致第2個AJAX請求的執(zhí)行發(fā)生錯誤。
發(fā)明內(nèi)容
本發(fā)明實施例提供了 一種響應(yīng)消息的執(zhí)行方法和裝置,以使得客戶端能 夠以正常的業(yè)務(wù)處理邏輯進行業(yè)務(wù)處理。
本發(fā)明實施例公開了一種響應(yīng)消息的執(zhí)行方法,包括接收服務(wù)器端返 回的響應(yīng)消息;獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消息與其 對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消息的發(fā)
送順序依次排序;以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依據(jù),根
據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包括 當前要執(zhí)行的響應(yīng)消息,如果是,執(zhí)行所述響應(yīng)消息,并返回所述判斷的步 驟,否則,將當前接收的所述響應(yīng)消息進行緩存,并返回所述接收響應(yīng)消息 的步驟。
優(yōu)選的,所述方法還包括當判斷所述緩存中包括當前要執(zhí)行的響應(yīng)消 息并執(zhí)行所述響應(yīng)消息后,從所述緩存中刪除所述響應(yīng)消息。 優(yōu)選的,所述獲得響應(yīng)消息的執(zhí)行序號包括
創(chuàng)建所述響應(yīng)消息的回調(diào)函數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示 所述響應(yīng)消息執(zhí)行順序的執(zhí)行序號;讀取所述拷貝函數(shù),獲得所述響應(yīng)消息 的執(zhí)行序號。
優(yōu)選的,所述當前要執(zhí)行的響應(yīng)消息具體為在未被執(zhí)行的響應(yīng)消息中, 最d 、執(zhí)行序號所對應(yīng)的響應(yīng)消息。
優(yōu)選的,所述根據(jù)執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中, 判斷是否包括當前要執(zhí)行的響應(yīng)消息包括按照響應(yīng)消息的執(zhí)行順序,將所 述響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)依次存儲在第一隊列中;讀取所述第一隊 列的第一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號;判斷所述響應(yīng)消 息的執(zhí)行序號是否與所述當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號相同。
優(yōu)選的,所述執(zhí)行響應(yīng)消息包括讀取所述第一隊列的第一元素,獲得 所述響應(yīng)消息的回調(diào)函數(shù);由所述回調(diào)函數(shù)執(zhí)行所述響應(yīng)消息,在執(zhí)行完所 述響應(yīng)消息后刪除所述第 一 隊列的第 一個元素。
優(yōu)選的,所述將當前接收的響應(yīng)消息進行緩存具體為將所述當前接收 的響應(yīng)消息和所述響應(yīng)消息的執(zhí)行序號存儲在第二隊列中。
本發(fā)明實施例公開了一種響應(yīng)消息的執(zhí)行裝置,包括接收單元,用于 接收服務(wù)器端返回的響應(yīng)消息;獲取單元,用于獲得所述響應(yīng)消息的執(zhí)行序 號,其中,每一個響應(yīng)消息與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個 執(zhí)行序號按照各個請求消息的發(fā)送順序依次排序;判斷單元,用于以各個響 應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依據(jù),根據(jù)所述執(zhí)行序號,在當前已 經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包括當前要執(zhí)行的響應(yīng)消息;執(zhí)
行單元,用于當所述判斷單元的判斷結(jié)果為是時,執(zhí)行所述響應(yīng)消息,并返 回所述判斷單元;緩存單元,用于當所述判斷單元的判斷結(jié)果為否時,將當 前接收的所述響應(yīng)消息進行緩存,并返回所述接收單元。
優(yōu)選的,所述裝置還包括第一刪除單元,用于當判斷所述緩存中包括 當前要執(zhí)行的響應(yīng)消息并執(zhí)行所述響應(yīng)消息后,從所述緩存中刪除所述響應(yīng) 消息。
優(yōu)選的,所述獲取單元包括創(chuàng)建單元,用于創(chuàng)建所述響應(yīng)消息的回調(diào) 函數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示所述響應(yīng)消息執(zhí)行順序的執(zhí)行 序號;第一讀取單元,用于讀取所述拷貝函數(shù),獲得所述響應(yīng)消息的執(zhí)行序號。
優(yōu)選的,所述判斷單元包括存儲單元,用于按照響應(yīng)消息的執(zhí)行順序, 將所述響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)依次存儲在第一隊列中;第二讀取單 元,用于讀取所述第一隊列的第一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí) 行序號;判斷子單元,用于判斷所述響應(yīng)消息的執(zhí)行序號是否與所述當前要 執(zhí)行的響應(yīng)消息的執(zhí)行序號相同。
優(yōu)選的,所述執(zhí)行單元包括第三讀取單元,用于讀取所述第一隊列的 第一元素,獲得所述響應(yīng)消息的回調(diào)函數(shù);執(zhí)行子單元,用于由所述回調(diào)函 數(shù)執(zhí)行所述響應(yīng)消息;第二刪除單元,用于在執(zhí)行完所述響應(yīng)消息后刪除所 述第一隊列的第一個元素。
由上述實施例可以看出,當接收到服務(wù)器端返回的響應(yīng)消息后,沒有立 刻執(zhí)行響應(yīng)消息,而是根據(jù)該響應(yīng)消息的執(zhí)行序號判斷該響應(yīng)消息是否為當 前要執(zhí)行的響應(yīng)消息,當判定該響應(yīng)消息不是當前要執(zhí)行的響應(yīng)消息時,把 該響應(yīng)消息先緩存在一個隊列中。然后從這個隊列中查找當前要執(zhí)行的響應(yīng) 消息,并執(zhí)行響應(yīng)消息,從而依次地按照發(fā)送的順序執(zhí)行服務(wù)器端返回的響 應(yīng)消息,使客戶端能夠按照正常的業(yè)務(wù)處理邏輯進行業(yè)務(wù)處理。
圖1為本發(fā)明一種響應(yīng)消息的執(zhí)行方法的第一個實施例的流程圖; 圖2為本發(fā)明中存有兩個響應(yīng)消息和執(zhí)行序號的第一隊列示意圖; 圖3為本發(fā)明中存有三個響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)的第二隊列示
意圖4為本發(fā)明一種響應(yīng)消息的執(zhí)行裝置的第一個實施例的結(jié)構(gòu)圖; 圖5為本發(fā)明一種響應(yīng)消息的執(zhí)行方法的第二個實施例的流程圖; 圖6為本發(fā)明一種響應(yīng)消息的執(zhí)行裝置的第二個實施例的結(jié)構(gòu)圖。
具體實施例方式
本發(fā)明實施例提供了響應(yīng)消息的執(zhí)行方法和裝置。首先,接收服務(wù)器端 返回的響應(yīng)消息;然后,獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng) 消息與其對應(yīng)的請求消息釆用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求 消息的發(fā)送順序依次排序;最后,以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送 順序為依據(jù),根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中, 判斷是否包括當前要執(zhí)行的響應(yīng)消息,如果是,執(zhí)行所述響應(yīng)消息,并返回 所述判斷的步驟,否則,將當前接收的所述響應(yīng)消息進行緩存,并返回所述 接收響應(yīng)消息的步驟。
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖 對本發(fā)明實施例進行詳細描述。
本發(fā)明可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如個人計 算機、服務(wù)器計算機、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、 包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的 一般上下文中描述, 例如程序模塊。 一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類 型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中 實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處 理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備 在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
請參閱圖1,其為本發(fā)明一種響應(yīng)消息的執(zhí)行方法的第一個實施例的流程 圖,該方法包括以下步驟
步驟101:接收服務(wù)器端返回的響應(yīng)消息;
其中,以客戶端在一次操作中分別發(fā)出A、 B和C三個請求為例,每個
請求都有一個與其相對應(yīng)的回調(diào)函數(shù),當服務(wù)器端接收到客戶端發(fā)送的請求 并將響應(yīng)消息返回給客戶端的時候,就會觸發(fā)相應(yīng)的回調(diào)函數(shù),告知客戶端
該請求已經(jīng)得到了響應(yīng),進而使客戶端執(zhí)行響應(yīng)消息。其中,AJAX組件是瀏 覽器提供的一種客戶端與服務(wù)器端通信的組件,例如,當客戶端發(fā)起請求A 時,會將請求A的請求地址和回調(diào)函數(shù)兩個參數(shù)發(fā)送給AJAX組件,由AJAX 組件根據(jù)提供的請求地址向服務(wù)器端發(fā)起請求,并等待服務(wù)器端的響應(yīng)。服 務(wù)器端接收到請求A后,先進行一系列處理,處理結(jié)束后再返回一個響應(yīng)消 息,AJAX組件收到了服務(wù)器端的響應(yīng)消息后,將觸發(fā)回調(diào)函數(shù),通知客戶端 服務(wù)器端已經(jīng)對請求A進行了響應(yīng),并由回調(diào)函數(shù)執(zhí)行請求A的響應(yīng)消息。
本實施例中,請求A的響應(yīng)消息為A',請求B的響應(yīng)消息為B',請求C 的響應(yīng)消息為C',并假設(shè)服務(wù)器端返回響應(yīng)消息的順序為B'、 C'、 A'。
步驟102:識別為所述響應(yīng)消息預(yù)設(shè)的順序標識,獲得所述響應(yīng)消息的執(zhí) 行序號;
其中,為響應(yīng)消息預(yù)設(shè)順序標識包括將業(yè)務(wù)請求的發(fā)送順序作為與所 述業(yè)務(wù)請求相對應(yīng)的響應(yīng)消息的執(zhí)行順序,為響應(yīng)消息設(shè)置指示所述響應(yīng)消 息執(zhí)行順序的順序標識。在本實施例中,發(fā)送順序為A、 B、 C,響應(yīng)消息的 4丸行順序應(yīng)該為A'、 B'、 C'。
識別為響應(yīng)消息預(yù)設(shè)順序標識,獲得所述執(zhí)行序號包括創(chuàng)建所述響應(yīng) 消息的回調(diào)函數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示所述響應(yīng)消息執(zhí)行 順序的順序標識;讀取所述拷貝函數(shù)中的所述順序標識,獲得所述響應(yīng)消息 的執(zhí)行序號。在本實施例中,發(fā)送請求A、 B和C時,分別為這三個請求創(chuàng) 建其回調(diào)函數(shù)的拷貝函數(shù),在拷貝函數(shù)中通過設(shè)置一個成員變量來保存響應(yīng) 消息的執(zhí)行序號,響應(yīng)消息A'、 B'、 C'的執(zhí)行序號分別為l、 2、 3。
根據(jù)本實施例中步驟102的假設(shè),首先接收到的是響應(yīng)消息B',因此, 在接收到響應(yīng)消息B'后觸發(fā)相應(yīng)的拷貝函數(shù),從拷貝函數(shù)中獲得的執(zhí)行序號 為2。
步驟103:根據(jù)所述響應(yīng)消息的執(zhí)行序號判斷所述響應(yīng)消息是否為當前要 4丸行的響應(yīng)消息,如果是,進入步驟104,如果否,進入步驟105; 步驟104:執(zhí)行所述響應(yīng)消息,進入步驟106;
步驟105:將所述響應(yīng)消息和所述響應(yīng)消息的執(zhí)行序號存儲在第二隊列 中,返回步驟IOI,直到所有響應(yīng)消息執(zhí)行完畢為止。
其中,當前要執(zhí)行的響應(yīng)消息為在未執(zhí)行的響應(yīng)消息中,最小執(zhí)行序號 所對應(yīng)的響應(yīng)消息。在本實施例中,初始狀態(tài)下三個響應(yīng)消息都沒有執(zhí)行, 最小執(zhí)行序號為1,此時從響應(yīng)消息B'的回調(diào)函數(shù)的拷貝函數(shù)中獲得的執(zhí)行序 號為2,因此,判定響應(yīng)消息B'不是當前應(yīng)該扭J亍的響應(yīng)消息,將響應(yīng)消息 B'和執(zhí)行序號2存儲在第二隊列中。
隨后,接收響應(yīng)消息C',獲得響應(yīng)消息C'的執(zhí)行序號為3,判定響應(yīng)消 息C'也不是當前應(yīng)該執(zhí)行的響應(yīng)消息,將響應(yīng)消息C'和執(zhí)行序號3也存儲在 第二隊列中,如圖2所示。
最后,接收響應(yīng)消息A',獲得響應(yīng)消息A'的執(zhí)行序號為1,判定響應(yīng)消 息A'是當前應(yīng)該執(zhí)行的響應(yīng)消息,執(zhí)行響應(yīng)消息A'。
這里,可以按照響應(yīng)消息的執(zhí)行順序?qū)⑷齻€響應(yīng)消息的執(zhí)行序號和回調(diào) 函數(shù)分別存儲在第一隊列中,如圖3所示,從第一隊列中的第一個元素中所 提取的執(zhí)行序號即為當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號,當判斷接收的響應(yīng) 消息為當前要#1行的響應(yīng)消息時,由第一個元素中的回調(diào)函數(shù)執(zhí)行該響應(yīng)消 息,然后刪除第一隊列中的第一個元素,使原隊列中的第二個元素成為新隊 列中的第 一個元素。在判斷下一個響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息時, 繼續(xù)從隊列中提取第一個元素,即原隊列中的第二個元素,以此類推。
步驟106:根據(jù)第二隊列中的響應(yīng)消息的執(zhí)行序號,判斷所述第二隊列中 的響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息,如果是,進入步驟104,如果否, 進入步驟101。
其中,在執(zhí)行響應(yīng)消息A'之前,所述第二隊列中不存在當前要執(zhí)行的響 應(yīng)消息,因此會返回到步驟IOI,等待接收下一個響應(yīng)消息,當執(zhí)行了響應(yīng)消 息A'之后,當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號為2,遍歷第二隊列,判斷第二 隊列中的響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息B',當存在時,執(zhí)4亍響應(yīng)消 息B',此時更新當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號為3,繼續(xù)遍歷第二隊列, 判斷第二隊列中的響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息C',當存在時,執(zhí) 行響應(yīng)消息C',所有響應(yīng)消息才丸行完畢。
與上述一種響應(yīng)消息的執(zhí)行方法相對應(yīng),本發(fā)明實施例還提供了 一種響 應(yīng)消息的執(zhí)行裝置。請參閱圖4,其為本發(fā)明一種響應(yīng)消息的執(zhí)行裝置的第一
實施例結(jié)構(gòu)圖,該裝置包括接收單元401、獲取單元402、判斷單元403、執(zhí) 行單元404和緩存單元405。下面結(jié)合該裝置的工作原理進一步介紹其內(nèi)部結(jié) 構(gòu)以及連接關(guān)系。
接收單元401,用于接收服務(wù)器端返回的響應(yīng)消息;
獲取單元402,用于獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消 息與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消
息的發(fā)送順序依次排序;
判斷單元403,用于以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依 據(jù),根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是 否包括當前要#(^亍的響應(yīng)消息;
執(zhí)行單元404,用于當所述判斷單元的判斷結(jié)果為是時,執(zhí)行所述響應(yīng)消 息,并返回判斷單元403;
緩存單元405,用于當所述判斷單元的判斷結(jié)果為否時,將當前接收的所 述響應(yīng)消息進行緩存,并返回接收單元401 。
其中,獲取單元402包括創(chuàng)建單元406,用于創(chuàng)建所述響應(yīng)消息的回調(diào)函 數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示所述響應(yīng)消息執(zhí)行順序的執(zhí)行序 號;第一讀取單元407,用于讀取所述拷貝函數(shù),獲得所述響應(yīng)消息的執(zhí)行序 號。
判斷單元403包括存儲單元408,用于按照響應(yīng)消息的執(zhí)行順序,將所 述響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)依次存儲在第 一 隊列中;第二讀取單元 409,用于讀取所述第一隊列的第一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí) 行序號;判斷子單元410,用于判斷所述響應(yīng)消息的執(zhí)行序號是否與所述當前 要執(zhí)行的響應(yīng)消息的執(zhí)行序號相同。
執(zhí)行單元404包括第三讀取單元411,用于讀取所述第一隊列的第一元 素,獲得所述響應(yīng)消息的回調(diào)函數(shù);執(zhí)行子單元412,用于由所述回調(diào)函數(shù)執(zhí) 行所述響應(yīng)消息;第二刪除單元413,用于在^L行完所述響應(yīng)消息后刪除所述
第一隊列的第一個元素。
由上述實施例可以看出,當接收到服務(wù)器端返回的響應(yīng)消息后,沒有立 刻執(zhí)行響應(yīng)消息,而是根據(jù)該響應(yīng)消息的執(zhí)行序號判斷該響應(yīng)消息是否為當 前要執(zhí)行的響應(yīng)消息,當判定該響應(yīng)消息不是當前要執(zhí)行的響應(yīng)消息時,把 該響應(yīng)消息先緩存在一個隊列中。然后從這個隊列中查找當前要執(zhí)行的響應(yīng) 消息,并執(zhí)行響應(yīng)消息,從而依次地按照發(fā)送的順序執(zhí)行服務(wù)器端返回的響 應(yīng)消息,使客戶端能夠按照正常的業(yè)務(wù)處理邏輯進行業(yè)務(wù)處理。
請參閱圖5,其為本發(fā)明一種響應(yīng)消息的執(zhí)行方法的第二個實施例的流程 圖,本實施例與上述實施例的不同之處在于,當判定第一隊列中的某個響應(yīng) 消息為當前要執(zhí)行的響應(yīng)消息,并執(zhí)行所述響應(yīng)消息后,還包括從第 一 隊列
中刪除所述響應(yīng)消息和所述響應(yīng)消息的執(zhí)行序號,該方法包括以下步驟 步驟501:接收服務(wù)器端返回的響應(yīng)消息;
步驟502:識別為所述響應(yīng)消息預(yù)設(shè)的順序標識,獲得所述響應(yīng)消息的執(zhí)
行序號;
步驟503:根據(jù)所述響應(yīng)消息的執(zhí)行序號判斷所述響應(yīng)消息是否為當前要 執(zhí)行的響應(yīng)消息,如果是,進入步驟504,如果否,進入步驟505; 步驟504:執(zhí)行所述響應(yīng)消息,進入步驟506;
步驟505:將所述響應(yīng)消息和所述響應(yīng)消息的執(zhí)行序號存儲在第二隊列 中,返回步驟IOI,直到所有響應(yīng)消息執(zhí)行完畢為止。
步驟506:根據(jù)第二隊列中的響應(yīng)消息的執(zhí)行序號,判斷所述第二隊列中 的響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息,如果是,進入步驟507,如果否, 進入步驟501;
步驟507:執(zhí)行所述響應(yīng)消息,從第二隊列中刪除所述響應(yīng)消息和所述響 應(yīng)消息的執(zhí)行序號,返回步驟506。
與上述一種響應(yīng)消息的執(zhí)行方法相對應(yīng),本發(fā)明實施例還提供了 一種響 應(yīng)消息的執(zhí)行裝置。請參閱圖6,其為本發(fā)明一種響應(yīng)消息的執(zhí)行裝置的第二 實施例結(jié)構(gòu)圖,該裝置包括接收單元601、獲取單元602、判斷單元603、執(zhí)行單元604、緩存單元605和第一刪除單元606。下面結(jié)合該裝置的工作原理 進一步介紹其內(nèi)部結(jié)構(gòu)以及連接關(guān)系。
接收單元601,用于接收服務(wù)器端返回的響應(yīng)消息;
獲取單元602,用于獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消 息與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消
息的發(fā)送順序依次排序;
判斷單元603,用于以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依 據(jù),根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是 '否包括當前要執(zhí)行的響應(yīng)消息;
執(zhí)行單元604,用于當所述判斷單元的判斷結(jié)果為是時,執(zhí)行所述響應(yīng)消 息,并返回判斷單元603;
緩存單元605,用于當所述判斷單元的判斷結(jié)果為否時,將當前接收的所 述響應(yīng)消息進行緩存,并返回接收單元601。
第一刪除單元606,用于當判斷所述緩存中包括當前要執(zhí)行的響應(yīng)消息并 執(zhí)行所述響應(yīng)消息后,從所述緩存中刪除所述響應(yīng)消息。
其中,獲取單元602包括創(chuàng)建單元,用于創(chuàng)建所述響應(yīng)消息的回調(diào)函數(shù) 的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示所述響應(yīng)消息執(zhí)行順序的執(zhí)行序號; 第一讀取單元,用于讀取所述拷貝函數(shù),獲得所述響應(yīng)消息的執(zhí)行序號。
判斷單元603包括存儲單元,用于按照響應(yīng)消息的執(zhí)行順序,將所述 響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)依次存儲在第一隊列中;第二讀取單元,用 于讀取所述第 一隊列的第 一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號; 判斷子單元,用于判斷所述響應(yīng)消息的執(zhí)行序號是否與所述當前要執(zhí)行的響 應(yīng)消息的執(zhí)行序號相同。
執(zhí)行單元404包括第三讀取單元,用于讀取所述第一隊列的第一元素, 獲得所述響應(yīng)消息的回調(diào)函數(shù);執(zhí)行子單元,用于由所述回調(diào)函數(shù)執(zhí)行所述 響應(yīng)消息;第二刪除單元,用于在執(zhí)行完所述響應(yīng)消息后刪除所述第一隊列 的第一個元素。
由上述實施例可以看出,當接收到服務(wù)器端返回的響應(yīng)消息后,沒有立 刻執(zhí)行響應(yīng)消息,而是根據(jù)該響應(yīng)消息的執(zhí)行序號判斷該響應(yīng)消息是否為當
前要執(zhí)行的響應(yīng)消息,當判定該響應(yīng)消息不是當前要執(zhí)行的響應(yīng)消息時,把 該響應(yīng)消息先緩存在一個隊列中。然后從這個隊列中查找當前要執(zhí)行的響應(yīng) 消息,并執(zhí)行響應(yīng)消息,從而依次地按照發(fā)送的順序執(zhí)行服務(wù)器端返回的響 應(yīng)消息,使客戶端能夠按照正常的業(yè)務(wù)處理邏輯進行業(yè)務(wù)處理。
此外,當從所述隊列中查找到當前要執(zhí)行的響應(yīng)消息,并執(zhí)行響應(yīng)消息 后,從所述隊列中刪除已經(jīng)執(zhí)行的響應(yīng)消息,從而避免下次再判斷所述隊列 中的響應(yīng)消息是否為當前要執(zhí)行的響應(yīng)消息時,重復(fù)判斷已經(jīng)被執(zhí)行的響應(yīng) 消息。
以上對本發(fā)明所提供的 一 種響應(yīng)消息的執(zhí)行方法和裝置進行了詳細介
領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均 會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1、一種響應(yīng)消息的執(zhí)行方法,其特征在于,所述方法包括接收服務(wù)器端返回的響應(yīng)消息;獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消息與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消息的發(fā)送順序依次排序;以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依據(jù),根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包括當前要執(zhí)行的響應(yīng)消息,如果是,執(zhí)行所述響應(yīng)消息,并返回所述判斷的步驟,否則,將當前接收的所述響應(yīng)消息進行緩存,并返回所述接收響應(yīng)消息的步驟。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括當判斷所述緩存中包括當前要執(zhí)行的響應(yīng)消息并執(zhí)行所述響應(yīng)消息后, 從所述緩存中刪除所述響應(yīng)消息。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲得響應(yīng)消息的執(zhí)行序號包括創(chuàng)建所述響應(yīng)消息的回調(diào)函數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示 所述響應(yīng)消息執(zhí)行順序的執(zhí)行序號;讀if又所述拷貝函數(shù),獲得所述響應(yīng)消息的執(zhí)行序號。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述當前要執(zhí)行的響應(yīng)消 息具體為在未被執(zhí)行的響應(yīng)消息中,最小執(zhí)行序號所對應(yīng)的響應(yīng)消息。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)執(zhí)行序號,在當 前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包括當前要執(zhí)行的響應(yīng)消息 包括按照響應(yīng)消息的執(zhí)行順序,將所述響應(yīng)消息的執(zhí)行序號和回調(diào)函數(shù)依次 存儲在第一隊列中;讀取所述第一隊列的第一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號;判斷所述響應(yīng)消息的執(zhí)行序號是否與所述當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號相同。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述執(zhí)行響應(yīng)消息包括 讀取所述第 一隊列的第 一元素,獲得所述響應(yīng)消息的回調(diào)函數(shù);由所述回調(diào)函凄t^^亍所述響應(yīng)消息,在#^亍完所述響應(yīng)消息后刪除所述 第一隊列的第一個元素。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將當前接收的響應(yīng)消 息進行緩存具體為將所述當前接收的響應(yīng)消息和所述響應(yīng)消息的執(zhí)行序號存儲在第二隊列中。
8、 一種響應(yīng)消息的執(zhí)行裝置,其特征在于,所述裝置包括 接收單元,用于接收服務(wù)器端返回的響應(yīng)消息;獲取單元,用于獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消息 與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消息 的發(fā)送順序依次排序;判斷單元,用于以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依據(jù), 根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包 括當前要執(zhí)行的響應(yīng)消息;執(zhí)行單元,用于當所述判斷單元的判斷結(jié)果為是時,執(zhí)行所述響應(yīng)消息, 并返回所述判斷單元;緩存單元,用于當所述判斷單元的判斷結(jié)果為否時,將當前接收的所述 響應(yīng)消息進行緩存,并返回所述接收單元。
9、 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括第 一刪除單元,用于當判斷所述緩存中包括當前要執(zhí)行的響應(yīng)消息并執(zhí) 行所述響應(yīng)消息后,從所述緩存中刪除所述響應(yīng)消息。
10、 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述獲取單元包括 創(chuàng)建單元,用于創(chuàng)建所述響應(yīng)消息的回調(diào)函數(shù)的拷貝函數(shù),在所述拷貝函數(shù)中設(shè)置指示所述響應(yīng)消息執(zhí)行順序的執(zhí)行序號;第一讀取單元,用于讀取所述拷貝函數(shù),獲得所述響應(yīng)消息的執(zhí)行序號。
11、 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述判斷單元包括 存儲單元,用于按照響應(yīng)消息的執(zhí)行順序,將所述響應(yīng)消息的執(zhí)行序號 和回調(diào)函數(shù)依次存儲在第一隊列中;第二讀取單元,用于讀取所述第一隊列的第一個元素,獲得當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號;判斷子單元,用于判斷所述響應(yīng)消息的執(zhí)行序號是否與所述當前要執(zhí)行的響應(yīng)消息的執(zhí)行序號相同。
12、根據(jù)權(quán)利要8所述的裝置,其特征在于,所述執(zhí)行單元包括 第三讀取單元,用于讀取所述第一隊列的第一元素,獲得所述響應(yīng)消息的回調(diào)函凄史;執(zhí)行子單元,用于由所述回調(diào)函數(shù)執(zhí)行所述響應(yīng)消息;第二刪除單元,用于在執(zhí)行完所述響應(yīng)消息后刪除所述第 一隊列的第一個元素。
全文摘要
本發(fā)明公開了一種響應(yīng)消息的執(zhí)行方法和裝置。其中,所述方法包括接收服務(wù)器端返回的響應(yīng)消息;獲得所述響應(yīng)消息的執(zhí)行序號,其中,每一個響應(yīng)消息與其對應(yīng)的請求消息采用同一個執(zhí)行序號,各個執(zhí)行序號按照各個請求消息的發(fā)送順序依次排序;以各個響應(yīng)消息所對應(yīng)的請求消息的發(fā)送順序為依據(jù),根據(jù)所述執(zhí)行序號,在當前已經(jīng)接收但未被執(zhí)行的響應(yīng)消息中,判斷是否包括當前要執(zhí)行的響應(yīng)消息,如果是,執(zhí)行所述響應(yīng)消息,并返回所述判斷的步驟,否則,將當前接收的所述響應(yīng)消息進行緩存,并返回所述接收響應(yīng)消息的步驟。根據(jù)本發(fā)明實施例,可以使客戶端以正常的業(yè)務(wù)處理邏輯進行業(yè)務(wù)處理。
文檔編號G06F9/44GK101388039SQ200810172730
公開日2009年3月18日 申請日期2008年11月11日 優(yōu)先權(quán)日2008年11月11日
發(fā)明者旭 張 申請人:深圳市金蝶中間件有限公司