Как работают async/await Node.js (вступление)

async/await созданы для того чтобы избежать ада callback-функций в коде. Данная идея была позаимствована из C# (который также содержит операторы async/await о похожим назначением). Смысл данного оператора заключается в следующем: он позволяет создать функцию которая будет ожадать выполнения в каждой асинхронной операции прежде чем приступить к следующей инструкции (или оператору).

Смысл этих операторов продемонстрирован в примере:

let getResultAndConinue = async (function() {
    let apiResponce = await (remoteApiCall());
    return processResult(apiResponce);
});

Без использования операторов async и await данный пример может выглядеть следующим образом:

function oldstyle(cb) {
  remoteApiCall(function(result){
     cb( processResult(result) );
  })
}

oldstyle(function(result){
  var getResultAndConinue = result;
})

Выполнение функции getResultAndContinue (в первом примере) не блокирует  EventLoop, но выполнение приостанавливается в await операторе. В это это время EventLoop может выполнять другие операции не связанные с приостановленной операцией. Это позволяет создавать код, который обрабатывает поток данных также эффективно, как и в случае callback-функций.

Таким образом использование async/await дает следующие преимущества:

Комментарии