나는 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach에 어떤 힌트를 찾을 수 있지만, 기본적으로 내가 할 노력하고 있어요 :자바 스크립트 맵의 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