передача дополнительной переменной в обратный вызов - PullRequest
0 голосов
/ 20 октября 2011

У меня есть следующий вызов, который запускает метод внутри объекта 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 Ответ

2 голосов
/ 20 октября 2011

Вам придется свернуть его, если вы не контролируете код, который использует ваш обратный вызов.Примерно так:

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

Если в объектах обратного вызова есть другие методы, вам придется их тоже обернуть.

...