Приветствую.
С ES6 появились промисы, в ES7 добавлены async/await - всюду публикуют рекомендации отказываться от callback-ов т.к. это понятнее и синтаксически "правильнее", но в то же время противоречивые данные по принципам работы (в целом пишут, что промисы и асинк/авайт - это "сахар").
В текущем проекте так складывается, что синтаксически вложенности более 2-х уровней колбеков нет и не будет, однако есть несколько модулей, требования к которым по скорости работы и затратам памяти очень "жестокие". И в первую очередь это связано с "замыканиями" и соответственно динамическим выделением памяти/ее очисткой + создание/удаление самих функций-обработчиков. Объекты местами довольно "тяжелые" и очень хочется максимально избежать лишних операций.
Соответственно вопрос - что же все-таки использовать правильнее в таких условиях (ведь если промисы и асинк/авайт только "сахар", то помимо накладных расходов от колбеков добавляется еще и эта "сахароза")? И почему?
И да, к слову, ситуация складывается так, что все это добро оформлено в классы и присутствует "условие" непредсказуемого количества повторений, что-то вроде (в синтаксисе async / await - так реально максимально понятно просто, если текущий вариант на колбеках постить, будет длинный и непростой код):
class a {
async updateMovies() {
let v = ....;
while (await a(v)) {
... тут повторяемый код метода
... некие операции с "v"
};
... тут код завершения метода
};
async a(v) {
...
};
};