【问题标题】:nodejs/pg, callback parametersnodejs/pg,回调参数
【发布时间】:2017-02-16 04:18:13
【问题描述】:

我对 node.js 还很陌生,还没有做太多的 javascripts。试图搜索我的问题,但找不到与之相关的具体答案。

所以,当我将 PostgreSQL 附加到我的应用程序时,我遵循了网络上一些示例中的 sn-p,它似乎运行良好。

无论如何我想了解它是如何工作的,但我在理解以下代码的特定部分时遇到了问题:

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(function(err, client, done) { ... }

我的理解是connect函数接受带有err、client和done作为参数的回调函数,但是我无法理解函数(err、client、done)从哪里传递给connect函数作为参数。在哪里,我的意思是调用连接函数的对象或调用者。

我怀疑会在内部处理,但我想清楚地知道。

【问题讨论】:

  • 所以你的问题是how do callbacks work in JavaScript?
  • @vitaly-t 不完全是,我了解回调是如何工作的,但我很好奇从哪里调用函数。我只是模棱两可地假设该函数会在某个时候在 pg 包中被调用。我只是想知道那个点具体在哪里。

标签: javascript node.js postgresql callback


【解决方案1】:

默认所有回调函数,第一个参数必须是错误,第二个是你的回调函数的结果。

Done类似于callback关键字,表示你的任务已经结束,并从函数调用的地方返回响应,就像普通函数中的return语句一样

示例:

 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);
 });

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 2018-12-10
    • 1970-01-01
    • 2016-08-31
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多