我找不到上https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach任何暗示,但基本上我試圖做的事:刪除javascript映射的forEach循環中的條目是否安全?
sessions.forEach(function (session, id) {
someConditionReached(id, function(err, res)) {
if (shouldDelete(err, res)) {
sessions.delete(id);
}
}
});
這會造成什麼麻煩嗎?如果是這樣,我應該做一個臨時數組來收集所有過時的會話,並在forEach
之後刪除它們?問題是,循環中的條件是基於異步/回調的,因此執行延遲刪除會很麻煩。
'sessions.delete()'是什麼? –
@NinaScholz:這是從地圖中刪除條目的方法; http://www.ecma-international.org/ecma-262/7.0/index.html#sec-map.prototype.delete。 –
我可以看到的唯一潛在的麻煩是您稍後(在循環之後,但在回調觸發之前)確定會話正在擴展(並且不應再被刪除)。但大概'shouldDelete'會照顧到這一點。 – Thilo