亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - Nodejs服務器中 應該何時res.end()呢?

瀏覽:82日期:2023-09-11 08:43:38

問題描述

有這樣的一個場景 ’/blog’ 路由下要處理用戶提交的數據假設要把三份數據存儲給三個key 然后代碼寫出來就變成這樣

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包裝的好看一些 但是在最后一個回調中res.end()來關閉連接,是不是存在問題?這個請求會被掛起很長一段時間把?一般這種地方應該怎么處理?因為只需要set而不需要返回結果給用戶,所以收到請求之后就直接res.end()來關閉連接可以不?

問題解答

回答1:

這取決于你是否希望這個 HTTP 請求的返回結果與數據庫操作的結果有關聯性,以及用戶交互設計是否容忍這個操作所花費的時間。

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

具體業務場景還要具體分析。碰到特別耗時的操作,前端提交操作請求后輪訓結果也不失為一種解決方案。

回答2:

看頁面顯示和數據庫操作結果有沒有相關性。如果有相關性,可以等待數據庫操作結束之后返回。也可以做成異步隊列的方式直接返回,成功后在推送結果。最終怎么樣,還是看你需求。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产噜噜噜精品免费 | 免费jizz在线播放视频高清版 | 蜜柚mv在线观看 | 色播在线永久免费视频网站 | 在线观看麻豆国产精品 | 黄色片在线 | 国产又黄又爽又色视频免费观看 | 国产精品福利久久2020 | 欧美综合另类 | 欧洲精品码一区二区三区免费看 | 777欧美 | 欧美日韩中文在线视频 | 麻豆短视频在线观看 | 亚洲精品久久久久久下一站 | 欧美日本韩国一区二区 | 性生活免费视频网站 | 成人免费视频在线看 | 亚洲综合18p | 三级三级三级网站网址 | 国产成人精品亚洲午夜麻豆 | 亚洲欧洲日产国码二区在线 | 四虎现在的网址入口2022 | 特色一级黄色片 | 视频一区二区在线观看 | 亚洲欧美日韩国产专区一区 | 欧美亚洲国产激情一区二区 | 中文字幕久久久久一区 | 久草香蕉视频在线观看 | 国内国语一级毛片在线视频 | 日韩视频不卡 | 91精品国产爱久久久久 | 国产大尺度吃奶无遮无挡网 | 网友自拍视频在线 | 亚洲国产精品一区二区九九 | 免费a级毛片大学生免费观看 | 亚洲国产第一 | 亚洲精品在线免费看 | 久青草国产手机在线视频 | 国产精品系列在线观看 | 一级欧美日韩 | 国产主播一区二区三区 |