Как предотвратить ошибку «Не удается деструктурировать ...» в JS? - PullRequest
0 голосов
/ 02 марта 2019

Как я могу предотвратить ошибку 'Cannot destruuring' field 'of undefined или null' в этом коде:

const [{ field }, { field2 }] = await Promise.all([asynchronous operations...])

1 Ответ

0 голосов
/ 02 марта 2019

Вот одно из возможных решений с использованием сторонней библиотеки (async-af).

const input = [Promise.resolve(null), Promise.resolve({field2: 'b'})];

(async () => {
  const [{field}, {field2}] = await AsyncAF(input).map(
    result => result != null ? result : {field: null, field2: null}
  );
  console.log(field, field2);
})();
<script src="https://unpkg.com/async-af@7.0.10/index.js"></script>

В качестве альтернативы, если вы хотели использовать значение по умолчанию:

const input = [Promise.resolve(null), Promise.resolve({field2: 'b'})];

(async () => {
  const [{field = 'defaultValue'}, {field2 = 'defaultValue'}] = await AsyncAF(input)
    .map(result => result != null ? result : {});
  console.log(field, field2);
})();
<script src="https://unpkg.com/async-af@7.0.10/index.js"></script>
...