我有以下调用,该调用在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,而且我不确定如何构造允许正确传递参数的构造。

谢谢你的帮助,

最佳答案

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

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


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

10-06 07:53