From 55ddd4454665a3c66e3d5b186bc79048468d36e7 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Mon, 15 Mar 2021 14:29:50 +0300 Subject: Auto fixes --- files/ru/web/javascript/guide/using_promises/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'files/ru/web/javascript/guide/using_promises') diff --git a/files/ru/web/javascript/guide/using_promises/index.html b/files/ru/web/javascript/guide/using_promises/index.html index b54c6a936a..fea85730ac 100644 --- a/files/ru/web/javascript/guide/using_promises/index.html +++ b/files/ru/web/javascript/guide/using_promises/index.html @@ -231,7 +231,7 @@ wait(10000).then(() => saySomething("10 seconds")).catch(failureCallback);Фактически, мы превращаем массив асинхронных функций в цепочку промисов равносильно: 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