Return from callback function in Javascript

前端 未结 4 555
时光说笑
时光说笑 2021-01-27 06:21

How do I get the return value from inside a value of node.js/javascript callback?

function get_logs(){
    User_Log.findOne({userId:req.user._id}, function(err,          


        
相关标签:
4条回答
  • 2021-01-27 06:25
    function get_logs(callback) {
        User_Log.findOne({
            userId: req.user._id
        }, function (err, userlogs) {
            if (err) throw err;
            if (userlogs) {
                // logs = userlogs.logs;
                callback("hello there is a logs");
            } else {
                callback("there is no logs yet...");
            }
        })
    }
    
    get_logs(function (data) {
        console.log(data);
    });
    

    Uses callbacks...

    0 讨论(0)
  • 2021-01-27 06:29

    You can't return the result from a function whose execution is asynchronous.

    The simplest solution is to pass a callback :

    function get_logs(cb){
        User_Log.findOne({userId:req.user._id}, function(err, userlogs){
            if(err) throw err;
            if(userlogs){
                // logs = userlogs.logs;
                cb("hello there is a logs");
            } else {
                cb("there is no logs yet...)"
            }
        })
    }
    
    get_logs(function(logs){
        console.log(logs);
    });
    
    0 讨论(0)
  • 2021-01-27 06:31

    You can't. You should instead pass another callback to your function. Something like this:

    function get_logs(callback){
        User_Log.findOne({userId:req.user._id}, function(err, userlogs){
            if(err) throw err;
            if(userlogs){
                callback("hello there is a logs");
            } else {
                callback("there is no logs yet...");
            }
        })
    }
    
    get_logs(function(arg1) {
       console.log(arg1);
    });
    
    0 讨论(0)
  • 2021-01-27 06:46

    In node.js almost all the callbacks run after the function returns , so you can do something like this

    function get_logs(){
        User_Log.findOne({userId:req.user._id}, function(err, userlogs){
            if(err) throw err;
            if(userlogs){
                // logs = userlogs.logs;
                   do_something(logs)
            } else {
                console.log('No logs')
            }
        })
    }
    
    0 讨论(0)
提交回复
热议问题