将额外变量传递给回调

时间:2011-10-20 01:03:36

标签: javascript callback asynccallback

我有以下调用,它在一个cacheListener对象中异步运行一个方法:

ohttp.asyncOpenCacheEntry(url, 4, cacheListener);

这是回调对象/函数的样子:

var cacheListener = {
    onCacheEntryAvailable: function(arg1, arg2, arg3) {
    // do something.
    }
}

我要做的是为该回调添加一个额外的参数。我已经尝试在调用结束时附加第三个参数,然后在函数定义中添加,但它不会像这样(myArg在最后)正确传递:

    ohttp.asyncOpenCacheEntry(url, 4, cacheListener, myArg);

以下是带有额外参数的回调对象/函数:

var cacheListener = {
    onCacheEntryAvailable: function(arg1, arg2, arg3, myArg) {
    // do something.
    }
}

myArg,如期望的那样,没有传递,我不知道如何制作一个允许正确传递参数的构造。

感谢您的帮助,

1 个答案:

答案 0 :(得分:2)

如果您不控制使用回调的代码,则必须将其打包。像这样:

ohttp.asyncOpenCacheEntry(url, 4, cacheListener, {
    onCacheEntryAvailable: function(arg1, arg2, arg3) {
        cacheListener.onCacheEntryAvailable(arg1, arg2, arg3, myArg);
    }
});

如果回调对象中还有其他方法,那么你也必须包装它们。