Skip to content

Concurrent modification during iteration #1

Open
@applecyg

Description

@applecyg

static void destroy({tag}) {
_list.forEach((rxBus) {
if (tag != null && tag != _DEFAULT_IDENTIFIER && rxBus.tag == tag) {
rxBus.subject.close();
_list.remove(rxBus);
} else if ((tag == null || tag == _DEFAULT_IDENTIFIER) && rxBus.tag == _DEFAULT_IDENTIFIER) {
rxBus.subject.close();
_list.remove(rxBus);
}
});
}
在进行迭代循环时试图删除list中内容,导致异常抛出,建议的修改方案如:
///事件关闭
static void destroy({tag}) {
var toRemove = [];
_list.forEach((rxBus) {
if (tag != null && tag != _DEFAULT_IDENTIFIER && rxBus.tag == tag) {
rxBus.subject.close();
toRemove.add(rxBus);
} else if ((tag == null || tag == _DEFAULT_IDENTIFIER) &&
rxBus.tag == _DEFAULT_IDENTIFIER) {
rxBus.subject.close();
toRemove.add(rxBus);
}
});
toRemove.forEach((rxBus) {
_list.remove(rxBus);
});
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions