第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Nodejs服務(wù)器中 應(yīng)該何時(shí)res.end()呢?

Nodejs服務(wù)器中 應(yīng)該何時(shí)res.end()呢?

一只名叫tom的貓 2018-11-13 13:14:50
有這樣的一個(gè)場(chǎng)景 '/blog' 路由下要處理用戶提交的數(shù)據(jù)假設(shè)要把三份數(shù)據(jù)存儲(chǔ)給三個(gè)key 然后代碼寫出來(lái)就變成這樣function handlePostBlog(req, res){    resid_client.set( key1, data1, function(err, response){        resid_client.set(key2, data2, function(err,response){            resid_client.set(key3, data3, function(err, response){                if(response === 'ok'){                    res.writeHead(200, ...)                    res.end()                }            })        })    })}不考慮好不好看。。雖然用promise包裝的好看一些 但是在最后一個(gè)回調(diào)中res.end()來(lái)關(guān)閉連接,是不是存在問(wèn)題?這個(gè)請(qǐng)求會(huì)被掛起很長(zhǎng)一段時(shí)間把?一般這種地方應(yīng)該怎么處理?因?yàn)橹恍枰猻et而不需要返回結(jié)果給用戶,所以收到請(qǐng)求之后就直接res.end()來(lái)關(guān)閉連接可以不?
查看完整描述

1 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

這取決于你是否希望這個(gè) HTTP 請(qǐng)求的返回結(jié)果與數(shù)據(jù)庫(kù)操作的結(jié)果有關(guān)聯(lián)性,以及用戶交互設(shè)計(jì)是否容忍這個(gè)操作所花費(fèi)的時(shí)間。

你在設(shè)計(jì)這個(gè) '/blog' 接口時(shí),需要明確指明 HTTP 返回 200 意味著什么。如果你們的業(yè)務(wù)場(chǎng)景只關(guān)心數(shù)據(jù)交付到后端,不關(guān)心后端是否正確存儲(chǔ)到數(shù)據(jù)庫(kù),那肯定可以直接結(jié)束掉 HTTP 請(qǐng)求。如果你們希望終端用戶得到這個(gè)確切的提交結(jié)果,那需要考慮交互層面了,設(shè)計(jì)良好的交互效果,2-6秒的等待,用戶體驗(yàn)不會(huì)很差(指AJAX請(qǐng)求場(chǎng)景下,打開(kāi)新頁(yè)面場(chǎng)景下還是慎重)。寫三次redis幾乎是不花時(shí)間,比起 HTTP 請(qǐng)求本身的鏈路延遲根本不算什么。

具體業(yè)務(wù)場(chǎng)景還要具體分析。碰到特別耗時(shí)的操作,前端提交操作請(qǐng)求后輪訓(xùn)結(jié)果也不失為一種解決方案。


查看完整回答
反對(duì) 回復(fù) 2018-12-14
  • 1 回答
  • 0 關(guān)注
  • 2591 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)