我在Node.js中寫了一些測試代碼,它們只是多次將HTTP請求發佈到Web服務器。以簡化形式:是否有可能在同一個服務器上有兩個併發的node.js POST請求?
function doPost(opts, data) {
var post_req = http.request(opts, function(res) {
res.setEncoding('utf8')
res.on('data', function (chunk) { })
})
post_req.write(JSON.stringify(data))
post_req.end()
}
setInterval(doPost, interval, opts, msg)
我寧願這些請求被順序地,即直到第一POST接收的響應隨後的後未發送發出。
我的問題是:由於運行時使用的non-blocking architecture of the underlying libuv library,是否有可能此代碼通過連接發送一個POST到Web服務器,但是然後能夠執行另一個帖子,即使來自服務器尚未到達?
如果我想象一下select()循環,我可以自由地爲第二個POST調用write()並獲取EWOULDBLOCK。或者如果網絡丟失,它是否會建立排隊等待IO線程池的POST請求的積壓?我不清楚在這種情況下我應該期待什麼樣的行爲。在下一次POST開始之前,我需要做些什麼來強制完成POST?
你看過異步庫嗎? https://www.npmjs.com/package/async'eachSeries'是您想要查看的功能。 – aschmid00