From 55ddd4454665a3c66e3d5b186bc79048468d36e7 Mon Sep 17 00:00:00 2001
From: Alexey Pyltsyn Promise.resolve().then(func1).then(func2);
Это также можно сделать, объеденив композицию в функцию, в функциональном стиле программирования:
+Это также можно сделать, объединив композицию в функцию, в функциональном стиле программирования:
const applyAsync = (acc,val) => acc.then(val);
const composeAsync = (...funcs) => x => funcs.reduce(applyAsync, Promise.resolve(x));
@@ -241,7 +241,7 @@ const composeAsync = (...funcs) => x => funcs.reduce(applyAsync, Promise.r
const transformData = composeAsync(func1, asyncFunc1, asyncFunc2, func2);
transformData(data);
-В ECMAScript 2017, последовательные композиции могут быть выполненны более простым способом с помощью async/await:
+В ECMAScript 2017, последовательные композиции могут быть выполнены более простым способом с помощью async/await:
for (const f of [func1, func2]) {
await f();
@@ -249,7 +249,7 @@ transformData(data);
Чтобы избежать сюрпризов, функции, переданные в then
никогда не будут вызванны синхронно, даже с уже разрешенным промисом:
Чтобы избежать сюрпризов, функции, переданные в then
никогда не будут вызваны синхронно, даже с уже разрешенным промисом:
Promise.resolve().then(() => console.log(2));
console.log(1); // 1, 2
@@ -264,7 +264,7 @@ console.log(1); // 1, 2, 3, 4
Простые цепочки promise лучше оставлять без вложений, так как вложеность может быть результатом небрежной структуры. Смотрите распространенные ошибки.
+Простые цепочки promise лучше оставлять без вложений, так как вложенность может быть результатом небрежной структуры. Смотрите распространенные ошибки.
Вложенность - это управляющая структура, ограничивающая область действия операторов catch. В частности, вложенный catch только перехватывает сбои в своей области и ниже, а не ошибки выше в цепочке за пределами вложенной области. При правильном использовании это дает большую точность в извлечение ошибок:
@@ -295,7 +295,7 @@ doSomething().then(function(result) {Вторая ошибка это излишняя вложенность, включая первую ошибку. Вложенность также ограничивает область видимости внутренних обработчиков ошибок, если это не то чего хотел разработчик, это может привести к необработанным ошибкам. Примером этого является пример как не нужно создавать обещания, который комбинирует вложенность с чрезмерным использованием конструктора обещаний для оборачивания кода который уже использует промисы.
-Третяя ошибка это забыть закончить цепочку ключевым словом catch
. Незаконченные цепочки приводят к необработанным отторжениям обещаний в большинстве браузеров.
Третья ошибка это забыть закончить цепочку ключевым словом catch
. Незаконченные цепочки приводят к необработанным отторжениям обещаний в большинстве браузеров.
Хорошим примером является всегда либо возвращать либо заканчивать цепочки обещаний, и как только вы получаете новое обещание, возвращайте его сразу же, чтобы не усложнять код излишней вложенностью:
-- cgit v1.2.3-54-g00ecf