关于node.js中callback()的含义
发布于 7 年前 作者 wksmile 3527 次浏览 来自 问答

下面的代码是在MySQL数据库连接池中的一个查询函数,query函数的第三个参数的回调函数function(err,result)中有两处用到callback()函数,下面有注释标记。想请教下这两处callback()分别指代的是什么函数,它们的参数分别传到哪个函数中执行?

connection.query(getUserByUserName_Sql, [username], function (err, result) { if (err) { console.log("getUserByUserName Error: " + err.message); callback(err, null); //–1----此处callback调用的是什么函数 } else { if(result== null || true) { var cmd = “SELECT startTime, endTime, exptLog FROM experiment WHERE id = ?”; connection.query(cmd, [result[0].course], function (err, result) { console.log(result[0].startTime); console.log(result[0].endTime); console.log(result[0].exptLog); startTime = result[0].startTime; endTime = result[0].endTime; log = result[0].exptLog; }); } } if(!connection.isRelease) { connection.release(); } callback(startTime, endTime, log); //----2-------此处callback()调用的是什么函数 });

3 回复

function test(str,cb){ cb = cb ||function(){}; console.log(str); //调用传进来的回调 setTimeout(cb(str+‘hello’),3000); }

function testcb(){ //这里的回调函数作为句柄传进去 test(‘who are you’,function(str){ console.log(‘cb str’,str);//3s以后打印who are you hello }) } testcb(); 难得做回好人,不点个赞?

@sanrudongfeng 非常感谢回答,回调讲的很好。可是那种隐式的callback()函数到底指代什么函数呢,执行的时候怎么执行的?能给以用callback()函数的应用讲解下吗?

1.这跟你隐式不隐式没关系额, function(str){ console.log(‘cb str’,str);//3s以后打印who are you hello } 这个就是cb,然后你再去看test函数,这个函数就是在test里面调用的,你没看懂我写的例子。 2.至于什么时候用这种形式,计算机处理任务大致有两类,cpu运算操作和io读写操作,在io操作比较多的情况下,适合用异步,这样cpu就可以继续处理其他任务而不会因为等待io空闲起来,cpu有空了就来处理这一系列的回调。建议搞清楚node的基本场景。

回到顶部