在我的node.js
應用程序中,我將一組客戶端套接字作爲數組集合在一起。發生通訊錯誤時,我只需在插座上撥打destroy
即可。在將陣列從陣列中移除之前或之後銷燬插槽
我的問題是:我應該從數組中刪除之前還是之後銷燬套接字?文件沒有說太多。
var clientSockets = []
var destroySocketBefore = function(socket) {
socket.destroy()
var socketIdx = clientSockets.indexOf(socket)
if (socketIdx > -1) {
clientSockets.splice(socketIdx, 1)
}
}
var destroySocketAfter = function(socket) {
var socketIdx = clientSockets.indexOf(socket)
if (socketIdx > -1) {
clientSockets.splice(socketIdx, 1)
}
socket.destroy()
}
在
destroySocketBefore
的情況下,我不知道如果套接字在陣列中發現,如果我尋找它之前摧毀它,所以該數組還包含無效插座的可能性隨後的邏輯。在
destroySocketAfter
的情況下,我不確定在從陣列中刪除的套接字上調用destroy
是否會獲得所需的結果。在拼接數組後,系統是否有可能刪除套接字對象,因此有時我會在null
對象上調用destroy
。
我測試,似乎這兩種方法的工作有沒有差別,所以我不知道哪種方法是正確的。
這兩者之間沒有功能差異。該數組不受調用'socket.destroy()'的影響,並且套接字不受從數組中移除的影響,因此您可以按任意順序執行它們。 – jfriend00
我不確定'銷燬'套接字將導致一個空對象,所以一切都會炸燬。 –
調用'socket.destroy()'改變套接字對象的內部狀態,但不會使對象消失。這只是對象的一種方法。 Javascript不能像你在C/C++中那樣手動「釋放」對象。所以,'socket'對象仍然存在,調用'.destroy()'後仍然存在一個Javascript對象。無論您在哪個訂單中進行兩項操作都無關緊要。 – jfriend00