Я использую библиотеку, где я должен определить функцию обратного вызова, и библиотека будет выполнять эту функцию при наступлении определенного события:Добавить переменную в яваскрипта обратного вызова
// initialize the callback for the library.
// `lib` is the main variable for the library and is defined globally
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: function(settings) { do stuff }
};
lib.reconfigure(libprops);
}
Библиотека затем запускает обратный вызов, как так (я не имею никакого контроля над этим):
var settings = 'xyz';
libprops.libcallback(settings);
Так ясно, один из входных переменных в мой определенной функции обратного вызова будет settings
переменными. Однако я также хочу передать в переменной моей:
function mycallback(settings, extra_var) {
// do stuff involving settings
// do stuff involving extra_var
}
Как я могу определить libprops.libcallback
в initializations()
так, что extra_var
передается в, но с функцией mycallback
определены в другом месте? Т.е. так:
function mycallback(settings, extra_var) {
// do stuff involving settings
// do stuff involving extra_var
}
Возможно ли это? Причина, по которой я хочу определить mycallback()
за пределами initializations()
, состоит в том, что mycallback()
довольно большой и ее грязный, чтобы он определил его внутри initializations()
.
Кажется, что закрытие решит проблему, но я не совсем уверен, как ее построить. Вот предварительная попытка:
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: (function(settings) {
mycallback(settings, extra_var)
})(extra_var)
};
lib.reconfigure(libprops);
}
у вас уже есть замыкание, поэтому вам не нужно проходить в 'extra_var' где угодно, он доступен на анонимный callback function уже, как 'extra_var' –
Спасибо @JaromandaX, я это понимаю, но я хочу определить' mycallback() 'вне' initializations() '. Я обновил вопрос, включив это важное требование. Извините за изменение игры. Это было очевидно для меня, но я понял, что это не было изначально включено в вопрос: P – mulllhausen
just: 'libcallback: function (settings) {..}', удалить вызов функции с помощью 'extra_var' –