【发布时间】:2022-01-08 07:45:30
【问题描述】:
有一个函数需要一个接收数据参数的回调函数。我需要一种在回调中访问 foo 的方法。从阅读中我发现闭包范围可以成为解决方案,但是我很难找到一个回调也接收数据对象(或任何变量)的示例。
const foo = 1;
this.editor.functionThatExpectsCallback('genericString', (data) => {
// do stuff with foo here, e.g.
const bar = foo + data.num;
return bar;
})
基本上问题是 foo 在回调范围内未定义,我需要定义它,同时仍保持对数据的访问。我非常感谢我能在这里得到的任何帮助。如果您需要更多信息,我很乐意提供。
【问题讨论】:
-
"基本上问题是 foo 在回调范围内未定义" 那么您的代码不会证明这一点,因为它将用你有代码。
-
好吧,为了这篇文章,我简化了我的代码,但我没有访问权限。你确定总是这样吗?
-
我相信回调函数是在不同的服务中远程执行的。这可能是 foo 未定义的原因吗?
-
首先,您可能必须检查所调用内容的文档——它可能会为此提供一种机制。如果没有,那么很遗憾,您将不得不从
new Function("data", `const bar = ${foo} + data.num; return bar;`)之类的字符串生成函数,但您必须非常小心,不要碰巧产生无效代码。
标签: javascript closures