Как использовать в колбеке результат функции, в которую он передается js
Есть такой псевдокод:
const callback = (data) => {
if(valid(data){
save(data)
win.close()
} else {
alert('данные не валидны')
}
}
const win = openWin(data, callback)
То есть в колбеке функии openWin
используется результат этой функции. При таком использовании пишет ошибку
cannot access variable before initialization
хотя колбек не может вызваться до того как переменная win
будет инициализирована.
Если объявить win
перед колбеком var
или let
, а потом установить, в колбеке win
захватывается как undefined
.
Как правильно поступить в такой ситуации, чтобы получить доступ к результату функции в колбеке?
Минимальный рабочий пример:
const openWin = (data, callback) => {
setTimeout(()=>{
callback(data+1)
}, 1000)
return {
close(){console.log('method close was called')}
}
}
const callback = (data) => {
if(data > 1){
// здесь надо получить доступ к win
win.close()
} else {
alert('data is invalid')
}
}
const win = openWin(1, callback)
Источник: Stack Overflow на русском