1 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
雖然此代碼可能有效,但存在一些問題:
你的競爭條件有問題。假設(shè) X 在檢查時(shí)可用
checkAvailable
,但在此代碼轉(zhuǎn)到 之前orderProduct
,X 不再可用,因?yàn)槠渌硞€(gè)客戶端訂購了可用的 X。那么,orderProduct
就會失敗。您似乎想要循環(huán)播放直到產(chǎn)品可用。該代碼將永遠(yuǎn)等待產(chǎn)品可用。如果那永遠(yuǎn)不會發(fā)生怎么辦?暫停是個(gè)好主意。
代碼無情地敲擊另一端,不斷詢問“它可用嗎?” “是可用的么?” “是可用的么?” (就像一個(gè)小孩問“我們到了嗎?”:-))。它至少應(yīng)該等待一段時(shí)間,通常在某個(gè)時(shí)候(再次)放棄之前以更大的步幅后退。
相反,將orderProduct
訂單發(fā)送到服務(wù)器(或數(shù)據(jù)庫或其他),并讓系統(tǒng)的該部分自動(dòng)訂購產(chǎn)品 - 如果失敗,請說明失敗是因?yàn)楫a(chǎn)品不可用還是其他原因,所以該代碼知道是否重試。如果服務(wù)器的結(jié)果是“不可用”,請稍等一下(使用逐漸增大的后退邏輯),然后再次嘗試下訂單;并添加超時(shí)。
添加回答
舉報(bào)