javascript - 此代码如何将参数传递给不带参数的回调?
问题描述
我正在筛选一些代码,但我不明白这段代码如何能够将参数传递给不带参数的回调。
我们从这个对象开始:
const oracleEndpoints = {
pancake: () => fetchPancake(),
lps: () => fetchLP(endpoints.lps), <-- endpoints.lps is an API url
};
还有这张地图:
const oracleToIds = new Map()
oracleToIds.set("lps", ["png-snob-avax", "png-png-avax"])
oracleToIds.set("pancake", ["WBNB", "BREW"])
现在这是我没有得到的部分:
const promises = oracleToIds.keys().map(key => oracleEndpoints[key](oracleToIds.get(key)));
oracleEndpoints[key]
是一个匿名回调 ( () => fetchPancake()
or () => fetchLP(endpoints.lps)
) 并且oracleToIds.get(key)
是一个字符串数组。
这个表达式中发生了什么,oracleEndpoints[key](oracleToIds.get(key))
然后将一个未参数化的回调传递给一个数组?
它是如何做到这一点的?
解决方案
我会仔细检查数组参数是否实际上被任何有意义的东西使用。const promises
考虑到您显示的单行代码中嵌套的高级别的嵌套,这很容易是由于编写者的混淆而导致的代码错误。
这会默默地导致一个只会在应用程序使用中表现出来的错误——如果你将额外的参数传递给一个函数,那么在 JavaScript 中不会抛出异常。
推荐阅读
- npm - 在 NPM package.json 中包含来自 bitbucket 的私有包失败
- python - 是否可以与 MySQL docker 容器建立 pymysql 连接?
- java - 好的http。无法保存加载的数据
- html - 网络字体不显示
- reactjs - 如果我安装了@types/react-router,我需要安装 react-router 吗?
- amazon-ec2 - mariadb amazon aws 实例不允许在命令行中使用重音字母
- javascript - 赢得乒乓球后不会出现文字
- idris - 如何使用我在 Idris 中制作的证明来通知编译器我的类型签名是正确的?
- java - HttpClient没有将所有cookie发送到restful api
- c - 如何打印特定单词之前的所有内容以及特定单词之后的所有内容?