[英]Is there a way to shorten a member function of an object conditionally in JavaScript?
我正在制作一个既需要.toArray()
又不需要的函数。 es6、es7 或 es8 中是否有条件添加这个?
await db
.collection(collection)
.find(params)
.toArray() //I want tis conditionally added or not
在这个意义上(这不起作用)
multiple && .toArray()
或者这只能在两种方法上实现?
有没有办法在 JavaScript 中有条件地缩短对象的成员函数?
并不真地。 您有一组链式方法,并且不能有条件地将某些内容插入链中。
我的感觉是,最明确的选择是这样的:
let x = db.collection(collection).find(params);
if (someCondition) x = await x.toArray();
还有其他奇怪的事情,例如提前在对象上放置一个无操作方法,然后从有时包含“toArray”有时包含“noop”的变量执行方法。
let x = await db.collection(collection).find(params)[someCondition ? "toArray" : "noop"]();
但是,我认为我自己永远不会以这种方式编写代码,因为我认为它不是很清楚。
仅供参考,您的特定示例有点奇怪,因为.find()
返回一个游标对象,而.toArray()
返回一个解析为数组的承诺。 因此,您还要求以一种方式与另一种方式最终获得不同类型的数据。 似乎这种不同的结果类型无论如何都必须沿着不同的代码路径走,因此条件分支不仅仅是这一步。 这表明人们应该真正着眼于整体问题的更大图景,而不仅仅是这一步或为了提出最佳解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.