Javascript 如何防止错误';无法解构…';在JS中?

Javascript 如何防止错误';无法解构…';在JS中?,javascript,arrays,ecmascript-6,es6-promise,Javascript,Arrays,Ecmascript 6,Es6 Promise,如何在此代码中防止错误“无法对未定义或null的“字段”进行分解”: const [{ field }, { field2 }] = await Promise.all([asynchronous operations...]) 下面是一个使用第三方库()的可能解决方案 const input=[Promise.resolve(null),Promise.resolve({field2:'b'})]; (异步()=>{ const[{field},{field2}]=等待异步af(输入).m

如何在此代码中防止错误“无法对未定义或null的“字段”进行分解”:

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

下面是一个使用第三方库()的可能解决方案

const input=[Promise.resolve(null),Promise.resolve({field2:'b'})];
(异步()=>{
const[{field},{field2}]=等待异步af(输入).map(
结果=>result!=null?结果:{field:null,field2:null}
);
控制台日志(字段,字段2);
})();

这里有一个使用第三方库()的可能解决方案

const input=[Promise.resolve(null),Promise.resolve({field2:'b'})];
(异步()=>{
const[{field},{field2}]=等待异步af(输入).map(
结果=>result!=null?结果:{field:null,field2:null}
);
控制台日志(字段,字段2);
})();

通过确保承诺解析到具有这些属性的对象?i、 e.第一个属性应为
字段
,第二个属性为
字段2
。在您的情况下,其中一个承诺解决为
未定义
。防止这种情况发生。@trincot在Promise中。我对DB执行的所有操作,在一种情况下Promise返回具有此属性的对象,在另一种情况下它返回“null”。如果承诺返回“undefined”,那么我可以使用默认值,但不能将其与“null”值一起使用。那么您希望对变量
字段
field2
)执行什么操作当相应的承诺解析为
undefined
null
时,您可以使用数组映射将
null
映射为
undefined
,例如
(等待Promise.all([…])。映射(x=>x==null?undefined:x)
,然后使用默认值。@Paulpro,那将是我没有想到的答案的普通JS版本。您应该将其作为答案发布。:)通过确保承诺解析到具有这些属性的对象?i、 e.第一个属性应为
字段
,第二个属性为
字段2
。在您的情况下,其中一个承诺解决为
未定义
。防止这种情况发生。@trincot在Promise中。我对DB执行的所有操作,在一种情况下Promise返回具有此属性的对象,在另一种情况下它返回“null”。如果承诺返回“undefined”,那么我可以使用默认值,但不能将其与“null”值一起使用。那么您希望对变量
字段
field2
)执行什么操作当相应的承诺解析为
undefined
null
时,您可以使用数组映射将
null
映射为
undefined
,例如
(等待Promise.all([…])。映射(x=>x==null?undefined:x)
,然后使用默认值。@Paulpro,那将是我没有想到的答案的普通JS版本。您应该将其作为答案发布。:)哎呀,刚刚意识到这不包括第二个结果为null。我得再看一眼。编辑:好的,修复了。哦,刚刚意识到这不会覆盖第二个结果为空。我得再看一眼。编辑:好的,修正了。