2016-10-07 6 views
-1

Я довольно новичок в node.js и не сделал много javascripts. Пытался найти мою проблему, но не смог найти конкретный ответ, связанный с ней.nodejs/pg, параметры обратного вызова

Итак, пока я работал над подключением PostgreSQL к моему приложению, я следил за фрагментом из некоторого примера в Интернете и, похоже, работает очень хорошо.

В любом случае я хотел бы понять, как это работает, у меня была проблема с пониманием определенную часть следующего кода:

module.exports = { 
    query: function(text, values, cb) { 
    pool.connect(function(err, client, done) { 
     if(err) { 
     return console.error('error fetching client from pool', err); 
     } 

     console.log(client); 

     client.query(text, values, function(err, result) { 
     done(); 
     cb(err, result); 
     }) 
    }); 
    } 
} 

и определенной части является:

pool.connect (функция (err, client, done) {...}

Я понял, что функция connect выполняет функцию обратного вызова с ошибкой, клиентом и выполняется как параметр, однако Я не мог понять, откуда передается функция (err, client, done) для подключения функции как параметр. К примеру, я имею в виду объект или вызывающий объект, который вызывает функцию соединения.

Я подозревал, что это будет обработано внутренне, но я хотел знать четко.

+0

Так ваш вопрос: «Как работают обратные вызовы в JavaScript»? –

+0

@ vitaly-t Не совсем, я понимаю, как работает обратный вызов, но мне было любопытно, откуда вызвана функция. Я просто двусмысленно предполагал, что функция будет вызываться внутри пакета pg в какой-то момент. Я просто хотел знать, где это будет конкретно. –

ответ

0

Bydefault вся функция обратного вызова, первый параметр должен быть ошибкой, а второй будет результатом функции обратного вызова ur.

Done похож на обратный вызов ключевого слова, которое говорит, ваша задача закончена и дать ответ обратно, откуда эту функция называется, его так же, как оператор возврата в нормальной функции

пример:

function callbackDemo(arg1, arg2, callback) { 
    if (condition) 
    callback(null, "Success"); 
    else 
    callback("error"); 
    } 

callbackDemo(1, 2, function(err, result){ 

    if(!err) 
    console(result); 
    else 
    console.log(err); 
}); 
Смежные вопросы