Как работают async/await Node.js (вступление)
25.12.2015async/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 дает следующие преимущества:
- возможность убрать callback-hell из кода
- полностью неблокирующий EventLoop подход
- возможно использовать в TypeScript
Комментарии