【问题标题】:return value from a callback function in javascript? [duplicate]从javascript中的回调函数返回值? [复制]
【发布时间】:2011-06-30 12:57:35
【问题描述】:

我正在使用 node.js 和库 Translate 。我可以做这样的事情吗? :

function traduce(text){ translate.text(text,function(err,result){ return result; }); }

然后使用结果?它总是返回我“未定义”。有没有办法在不这样做的情况下使用结果? : .

translate.text(text,function(err,result){ // use result // some logic });

【问题讨论】:

  • 您能否举例说明您希望如何使用traduce 函数?可能会有一种方法可以做你想做的事,但是是以异步的方式。

标签: javascript callback node.js translate


【解决方案1】:

您不是在执行函数,而是在传递对匿名函数的引用。如果你想要返回值,执行它:

function traduce(text){
    translate.text(text, (function(err,result){
        return result;
    })());
}

【讨论】:

  • translate.text 将函数作为第二个参数
【解决方案2】:

问题不是你能做到这一点,而是你应该这样做。这实际上是理解异步代码的问题,每一次对 node.js 的介绍都会深入介绍这一点。

Translate 本身使用 google api,因此向另一台服务器发出请求。如果您要等待结果,那将是一个冗长的阻塞操作,这是不可取的。

【讨论】:

    【解决方案3】:

    他们提供 30 种语言的翻译。我认为,这意味着翻译是通过调用网络服务进行的,对吧?也许 node.js 提供了类似其他语言的“waitFor”之类的东西。但是正如你所写的那样,它是无法完成的

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 2020-12-03
      • 2015-03-15
      • 2016-10-16
      • 2016-01-14
      相关资源
      最近更新 更多