首页 > 解决方案 > 此代码如何将参数传递给不带参数的回调?

问题描述

我正在筛选一些代码,但我不明白这段代码如何能够将参数传递给不带参数的回调。

我们从这个对象开始:

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))然后将一个未参数化的回调传递给一个数组?

它是如何做到这一点的?

标签: javascript

解决方案


我会仔细检查数组参数是否实际上被任何有意义的东西使用。const promises考虑到您显示的单行代码中嵌套的高级别的嵌套,这很容易是由于编写者的混淆而导致的代码错误。

这会默默地导致一个只会在应用程序使用中表现出来的错误——如果你将额外的参数传递给一个函数,那么在 JavaScript 中不会抛出异常。


推荐阅读