gpt4 book ai didi

JavaScript - 将数据传递给匿名函数

转载 作者:行者123 更新时间:2023-11-29 21:55:20 25 4
gpt4 key购买 nike

我有一个典型的用例(可能对我的用例来说过于具体)。

我有一 block 像这样的:

var x=0,y=10;

var data = {"callback" : function(x,y) {console.log(x,y)}}

我在代码流中的某些地方异步调用了匿名函数

call(data.callback);

我的问题是在第二段代码中我没有 x,y 的数据在调用函数时传递。那么,有什么方法可以在声明函数本身时附加数据(x,y 变量数据)?

编辑 1:

@Kursad Gulseven,因为,为了简单起见,我是这样展示的。

但是,在实际情况下,“数据”、“回调”是动态名称。所以,我不能简单地使用 data.callback。

虽然我这样做了,但我无法在尝试调用匿名函数的地方使用变量(带有数据)。因为调用匿名函数又是来自另一个异步函数,这就是这里的问题。

希望它清楚并且有一定道理。

最佳答案

当 x 和 y 可用时,将它们注入(inject)您的数据对象。

data = {
x: null,
y: null,
"callback": function(x, y) {
x = x || this.x;
y = y || this.y;
console.log(x, y);
}
}

data.x = 0
data.y = 10;

// I'm assuming here you have a way to know how the "data" object is called
// and how to access it. (the obejct it's attached to)
// For simplicity, I used a global

var dataName = 'data',
callbackName = 'callback';

//using a wrapper function without parameters, like in your example
// call(data.callback);


//calling without parameters
window['data']['callback']();

// calling with parameters
window[dataName][callbackName](15, 25);

注意:如果您通过某种异步调用获取 x 和 y,您可能需要检查 promise pattern

关于JavaScript - 将数据传递给匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26729166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com