为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻过高山走不出你 2018-09-07 14:19:16
代码用于查数据库,采用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); //成功!返回查询的用户信息            });        });    });};函数调用
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

callback只是一个普通的函数,叫回调是因为它一般是在传入的函数运行结束时被调用

该函数返回值是什么?

看你传进来的callback是什么

callback(null, user);这里为什么第一个参数是null?

如果有错,第一个是参数是错误,否则是nullcallback函数通过检查第一个返回值来判断是否出错

一个无聊的例子

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


查看完整回答
反对 回复 2018-10-17
  • 1 回答
  • 0 关注
  • 1293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号