[英]Returning multiple asynchronous responses
我目前正在尋找建立一個接受請求的端點,並在加載時以遞增的方式返回響應數據。
這樣做的應用是,給定一個數據上傳,我想為該數據計算許多不同的指標。 隨着每個指標的異步計算,我想將此指標的值返回到前端進行渲染。
為了進行測試,我的控制器如下所示,嘗試使用res.write
uploadData = (req, res) => {
res.write("test");
setTimeout(() => {
res.write("test 2");
res.end();
}, 3000);
}
但是,我認為問題源於我在React-Redux中編寫的客戶端,並通過Axios調用來調用該路由。 據我了解,這是因為axios請求在收到第一個響應后便關閉,並且連接不會保持打開狀態。 這是我的axios調用的樣子:
axios.post('/api', data)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
是否有捷徑可尋? 我也考慮過流式傳輸,但是我對流式傳輸的關注是,我希望每個連接在短時間內打開(即僅在計算指標時打開)的客戶端之間是直接且唯一的。
我還應該提到,上載的資源是數據庫,並且我想避免由於多個端點而多次解析和打開連接。
預先感謝,如果可以提供更多背景信息,請告訴我
在仍然使用傳統API的情況下處理此問題的一種方法是將指標存儲在某個對象(例如數據庫或Redis)中的某個位置,然后長時間輪詢資源。
對於一個真實的例子,假設您要計算以下foo,度量時間,請求長度,bar和foobar的度量。
您可以在存儲中創建一個如下所示的對象:
{
id: 1,
lengthOfRequest: 123,
.....
}
那么您將在API中創建一個類似於metrics/{id}
的終結點並返回該對象。 只要繼續呼叫路由,直到一切完成即可。
當然,這樣做有一些明顯的弊端,但是一旦您獲得足夠的信息來了解度量平均需要花費多長時間,就可以調整兩次調用API之間的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.