2017-08-21 90 views
1

我在node.js中使用express時遇到了一些阻塞問題。 目前,我有現在這樣的代碼:快速/節點中的阻塞問題

router.get('/Hello', function(req, res, next) { 
    (async()=>{ 
     try{ 
      await api.connect(); 
      let result=await api.HandleSomethins(); 
      await api.disconnect(); 
     }catch(err){ 
     console.log(err); 
     } 
    })(); 
    return res.status(json(result)); 
}); 

沒有與上面的代碼沒有問題,我只是用異步/ AWAIT同步沉重的東西加載過程。

後來我有下面的情況:

  • 1.UserA使用此URL連接我的Node.js和用戶A是waitting爲 現在響應。
  • 2.UserB也在此時連接,因此node.js無法立即處理UserB的請求。
  • (note)。我需要發送迴應給用戶客戶端(iOS/Android)。

也許節點服務器會在同一時間得到UserC,D等。我該怎麼做才能處理這種情況? child_proess?簇?或者是其他東西?

+0

這取決於什麼'api.HandleSomethins()'一樣。它是CPU重嗎?另外,是否真的有必要爲每個請求連接/斷開「api」? – robertklep

+0

題外話。我幾乎可以肯定上述代碼存在問題。它應該在'result'沒有被定義時拋出引用錯誤。 –

+0

請顯示'api.connect()'和'api.HandleSomethins()'代碼。 – Aabid

回答

0

試試就像這樣:

router.get('/Hello', async (req, res, next) => { 
     let result = null; 
     try { 
       await api.connect(); 
       result = await api.HandleSomethins(); 
       await api.disconnect(); 
     } catch (err) { 
       console.log(err); 
     } 

     return res.status(json(result)); 
}); 
+0

這是工作,謝謝。 – seedpk5079

+0

標記爲已回答。謝謝。 – pitter