Сохраните старую Filter с прежним контрактом, а конкурентный вариант добавьте отдельной функцией или явно опциональным API. Новая семантика не должна незаметно менять старые вызовы.
Как добавить асинхронное выполнение предиката в функцию Filter, сохранив обратную совместимость для существующих пользователей пакета?
Сохраните старую Filter с прежним контрактом, а конкурентный вариант добавьте отдельной функцией или явно опциональным API. Новая семантика не должна незаметно менять старые вызовы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сохраните старую Filter с прежним контрактом, а конкурентный вариант добавьте отдельной функцией или явно опциональным API. Новая семантика не должна незаметно менять старые вызовы.
Определите context, ограничение конкурентности, порядок результата и обработку ошибок. Предикат должен быть безопасен при одновременных вызовах; если раньше он имел побочные эффекты, автоматическая параллелизация может сломать поведение. Отдельное имя вроде FilterConcurrent делает различие явным. Для сохранения порядка можно собирать результат по исходным индексам.