Асинхронность в Javascript больше не страшна. Классические триллеры вроде
«Callback Hell» и «Pyramid of Doom» потеряли свою актуальность настолько,что даже Java-программисты перестали пугать ими невинных джуниоров.
Всё благодаря паттернам и библиотекам. Streams, Promises, Async-Await и другие изменили наш код. Теперь он прекрасен.
Пока ещё вымысел? Поговорим о том, как сделать эту картину реальностью. Об основных практиках асинхронного программирования.
Принципах их работы,отличиях и сценариях использования.
4. Schlecht!Script
/* OK! */
function outer*blue() {
inner*blue()
}
4
Синие могут вызывать только другие
синие функции
/* NOT OK! */
function outer*blue() {
inner*red()
}
5. Schlecht!Script
/* OK! */
function outer*red() {
inner2*red()
}
5
Красные могут вызывать и
красные и синие функции
/* OK! */
function outer*red() {
inner2*blue()
}
50. try {
var user = fetchUser(userId);
var following = fetchFollowingUsers(userId);
var tweets = fetchTweets(following);
handleResult(tweets);
} catch (err) {
handleError(err);
}
50
Получить ленту твитов синхронно
Continuation Passing Style
95. try {
var user = await fetchUser(userId);
var following = await fetchFollowingUsers(userId);
var tweets = await fetchTweets(following);
handleResult(tweets);
catch (err) {
handleError(err);
}
95
Получить ленту твитов: Async/Await
ES6 и ES7