【发布时间】:2019-07-23 23:21:41
【问题描述】:
如何防止在此代码中出现错误“无法解构未定义或 null 的“字段”:
const [{ field }, { field2 }] = await Promise.all([asynchronous operations...])
【问题讨论】:
-
通过确保承诺解析为具有这些属性的对象?即第一个应该有
field作为属性,第二个应该有field2。在您的情况下,其中一个承诺以undefined或null解决。防止这种情况发生。 -
@trincot in Promise.all 我使用 DB 执行操作,在一种情况下,promise 返回具有此属性的对象,而在另一种情况下,它返回“null”。如果 promise 返回“未定义”,那么我可以使用默认值,但不能将其与“空”值一起使用。
-
那么当相应的 Promise 解析为
undefined或null时,您希望变量field(field2) 发生什么? -
您可以使用 Array#map E.G. 将
null映射到undefined(await Promise.all([...])).map( x => x === null ? undefined : x )然后使用默认值。 -
@Paulpro,这将是我逃避的答案的香草 JS 版本。您应该将其发布为答案。 :)
标签: javascript arrays ecmascript-6 es6-promise