回调函数里面的callback不是很理解,求解释?

代码用于查数据库,采用express框架。不是很理解get方法里面的callback,该函数返回值是什么?callback(null, user);这里为什么第一个参数是null?感觉JS回调自己理解的不是很清楚

//读取用户信息

function User(user) {

    this.name = user.name;

    this.password = user.password;

    this.email = user.email;

};


User.get = function(name, callback) {

    //打开数据库

    mongodb.open(function(err, db) {

        if (err) {

            return callback(err); //错误,返回 err 信息

        }

        //读取 users 集合

        db.collection('users', function(err, collection) {

            if (err) {

                mongodb.close();

                return callback(err); //错误,返回 err 信息

            }

            //查找用户名(name键)值为 name 一个文档

            collection.findOne({

                name: name

            }, function(err, user) {

                mongodb.close();

                if (err) {

                    return callback(err); //失败!返回 err 信息

                }

                callback(null, user); //成功!返回查询的用户信息

            });

        });

    });

};

函数调用

https://img.mukewang.com/5bc6ef3f0001571804340364.jpg

翻过高山走不出你
浏览 1294回答 1
1回答

噜噜哒

callback只是一个普通的函数,叫回调是因为它一般是在传入的函数运行结束时被调用该函数返回值是什么?看你传进来的callback是什么callback(null, user);这里为什么第一个参数是null?如果有错,第一个是参数是错误,否则是null,callback函数通过检查第一个返回值来判断是否出错一个无聊的例子function fa(a, callback) {    if (a == 1) {         fb(3, callback);     } else {        callback("err: a != 1");     } }function fb(b, callback) {    if (b === 3) {        callback("err: b == 3");     } else {        callback(null, "b != 3");     } } fa(1, function (err, res) {  if (err) {     console.error(err);   } else {     console.log("success");     console.log(res);   } });输出为err: b == 3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript