Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript回调中的嵌套函数返回值_Javascript_Node.js_Mongoose_Closures_Mean Stack - Fatal编程技术网

从Javascript回调中的嵌套函数返回值

从Javascript回调中的嵌套函数返回值,javascript,node.js,mongoose,closures,mean-stack,Javascript,Node.js,Mongoose,Closures,Mean Stack,我试图从上面的代码段返回retVal,但我一直得到undefined作为返回值。当我将函数外部的retVal声明移动到global范围时,它以某种方式成功地工作了。 问题是我不想全局声明retVal。是否有帮助?至少在函数范围内声明retVal function(Model, payload) { try { var Obj = new Model(payload); Obj.save(function(err, obj) { if

我试图从上面的代码段返回
retVal
,但我一直得到
undefined
作为返回值。当我将函数外部的
retVal
声明移动到
global
范围时,它以某种方式成功地工作了。
问题是我不想全局声明
retVal
。是否有帮助?

至少在函数范围内声明retVal

function(Model, payload) {
    try {
        var Obj = new Model(payload);
        Obj.save(function(err, obj) {
            if (err) {
                console.log('should be err', err.err);
                retVal = err.err;
            } else {
                console.log('should be user', obj);
                retVal = obj;
            }
        });
    } catch (e) {
        return e;
    }
    return retVal;
};

依我看,捕获异常以返回它不是一种好的做法。这将导致进一步的问题。如果您想在更高的级别处理异常,您可能根本不想在当前函数中捕获它。回调成功了!
function (Model, payload) {
  var retVal;
  ...
  ...
  return retVal;
};