首页 > 解决方案 > 如何防止 JS 中出现“无法解构...”错误?

问题描述

如何在此代码中防止错误“无法解构未定义或 null 的‘字段’”:

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

标签: javascriptarraysecmascript-6es6-promise

解决方案


这是使用 3rd 方库 ( 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>


推荐阅读