繁体   English   中英

回调,JavaScript返回值

[英]Return Value on a callback, Javascript

我在使用nodejs函数时遇到了一些麻烦。 我要做的就是获取返回值。 当我查看控制台日志时,可以看到“未定义”。

我知道这是因为回调在执行console.log之前没有结束,但是我不知道如何解决此问题。

var info = api.getBridge();
console.log(info)

api.getBridge = function () {

   var hue = require("node-hue-api");
   var resultado;

   hue.nupnpSearch(function (err, result) {
      if (err) throw err;
      return result;
   });
}

您可以尝试在回调中执行console.log:

var info = api.getBridge();

但是在您的回调中:

var callbackvalue = hue.nupnpSearch(function(err, result) {
    if (err) 
        throw err;
    return result;
});
console.log(callbackvalue);

好了,现在您知道函数返回了什么。 要进一步使用此“返回值”,您只需要调用处理结果的代码,并使用相应的值进行调用即可:

var thisProcessesYourResults = function(someValueToProcess){...}

再一次,在您的回调中:

thisProcessesYourResults(callbackvalue);

异步工作时,您无法将值返回到原始调用上下文。 最终的代码(如果足够复杂的话)充其量会误导或造成混淆。 解决这个问题的方法是一种承诺

我会尽量避免嵌套的回调,只是做这样的事情:

// this code will execute synchronously
var hue = require("node-hue-api");
var resultado;

// this code will execute asynchronously
hue.nupnpSearch(function(err, result) {
    if (err) throw err;
    var info = response;
    console.log(info);
    //all further operations on the returned values should happen here
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM