繁体   English   中英

如何将返回诺言的函数应用于Ramda中的每个列表项

[英]How to apply a function that returns a promise to each list item in Ramda

我有一个名称列表,每个名称都需要从Firebase提取数据库。 FireStore的get函数返回一个promise。

我该如何在Ramda中工作? 我已经尝试过ComposeP / pipeP,但是我需要这些来循环工作。

想想我刚进入函数式编程时就缺少了明显的东西。

任何帮助或指针,将不胜感激。

我不清楚您要寻找的是什么,但是乍一看我相信您只需要Promise.all 这是一个Promise.all Firebase并通过Firebase调用组成Promise.all的简单解决方案。 延迟1秒后,它应该记录正确的值。

 const people = { barney: {name: 'Barney Rubble', id: 1}, betty: {name: 'Betty Rubble', id: 2}, fred: {name: 'Fred Flintstone', id: 3}, wilma: {name: 'Wilma Flintstone', id: 4} } const FakeFirestore = { get: name => new Promise(r => setTimeout(_ => r(people[name]), 1000)) } const getAll = R.compose(Promise.all.bind(Promise), R.map(FakeFirestore.get)) getAll(['betty', 'wilma']).then(R.map(console.log)) 
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script> 

但是请注意,Ramda通话在这里并不是特别重要。 getAll也可以写成const getAll = names => Promise.all(names.map(FakeFirestore.get))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM