【问题标题】:Returning the value from a nested function within a callback in Javascript [duplicate]从Javascript回调中的嵌套函数返回值[重复]
【发布时间】:2015-03-15 21:16:58
【问题描述】:
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;
};

我试图从上面的代码 sn-p 返回retVal,但我不断得到undefined 作为返回值。当我将 retVal 的声明移到函数外的 global 范围时,它以某种方式设法工作。 问题是我不想在全球范围内声明retVal。有什么帮助吗?

【问题讨论】:

  • 恕我直言,捕获异常以返回它不是一个好习惯。这将导致您遇到更多问题。如果您想在更高级别处理异常,您可能不想在当前函数中捕获它。

标签: javascript node.js mongoose closures mean-stack


【解决方案1】:

至少在函数范围内声明retVal。

function (Model, payload) {
  var retVal;
  ...
  ...
  return retVal;
};

【讨论】:

  • 回调成功了!