Помощь с callback'ом

BlackFox

Trainee
Помогите разжевать что я делаю не так, когда мне надо вытащить данный callback на верх.

unknown (1).png

unknown (2).png
 

Dihan48

Middle Developer
Скриптер
console.log это код который сразу даёт результат выполнения (странно что ты там получаешь undefined, потому что по идее arr пустая строка и будет "arr:"), а у твоей функции loadZoneInfo результат выполнения будет позже так как она зависит от DB.Handle.query, точнее от того когда будет вызван колбек DB.Handle.query (err, result) => {...}, а он естественно не будет вызван моментально так как происходит обращение к БД и эта операция под капотом выполняется асинхронно(не моментально а с задержкой)
 
Последнее редактирование:

Dihan48

Middle Developer
Скриптер
а ну и решение из этого простое, перенеси console.log в колбек
function(infoZone){ console.log('arr:', infoZone) }
 

BlackFox

Trainee
Мне в дальнейшем, этот массив надо будет использовать, по этому его надо пробросить на верх
 

geneff

Middle Developer
Скриптер
JavaScript:
let arr = '';
async function infoWzp() {
    arr = await loadZoneInfo();
    console.log('arr:', arr);
}
function loadZoneInfo(callback) {
    return new Promise((res) => {
        DB.Handle.query('SELECT * FROM wzp_info', (err, result) => {
            if (err)
                return console.log(err);
            
            if (result.length < 1)
                return;

            res(result);
        });
    });
}
infoWzp()
 
Яндекс.Метрика
Верх