【发布时间】:2020-02-11 10:14:26
【问题描述】:
我仍在研究 Promises,但在使用它们时,我意识到减少 fetch 对象数组并在它们旁边放置一些限制会很好。在创建慢速查询函数时,我意识到我想不出一种优雅的方式来推送到数组并返回该数组比这更好。
所以。我的问题是; 在 JavaScript 中,有没有比这更优雅的方式来推送数组并一步返回数组?
const mQry = q => fetch(q).then(r=>r.json()); // Fetches and returns json
const throttle = t => new Promise(r=>setTimeout(r,t)); // adds a promised timeout
const slowQrys = (q,t) => // pass in an array of links, and a number of milliseconds
Promise.all(q.reduce((r,o)=> // reduce the queries
// Here's the big issue. Is there any more elegant way
// to push two elements onto an array and return an array?
[...r, mQry(...o), throttle(t)]
,[]);
在任何人说之前,我非常清楚拆分数组可能效率不高,但我可能从未使用超过 10 个项目,所以这不是什么大问题。
【问题讨论】:
-
flatMap,但是您使用throttle的方式毫无意义。它应该做什么? (是否有意并行运行提取?) -
这不是节流。节流将防止函数被过度调用——至少在这段代码中,这似乎没有做任何事情。
-
老实说,我对这段代码感到很困惑。很难理解一个字母变量是什么。但它似乎你应该能够做
r.concat(mQry(...o), throttle(t))而不是创建一个新数组并传播。 -
@VLAZ:这完全一样。
-
@Ry- 它比扩展和重新创建数组更“优雅”。虽然,正如我所说,我不确定这段代码应该做什么。我的大脑拒绝处理它,所以我就放弃了。
标签: javascript arrays promise