从javascript中的回调函数返回值? [复制]

Posted

技术标签:

【中文标题】从javascript中的回调函数返回值? [复制]【英文标题】:return value from a callback function in javascript? [duplicate] 【发布时间】: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 函数?可能会有一种方法可以做你想做的事,但是是以异步的方式。 【参考方案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”之类的东西。但是正如你所写的那样,它是无法完成的

【讨论】:

以上是关于从javascript中的回调函数返回值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 fetch 从 Promise 回调中返回返回值? [复制]

如何从 Graphql 解析函数中的回调返回值?

理解javascript中的回调函数(callback)

JavaScript函数等待回调返回值[重复]

从javascript中的回调获取数据?

JavaScript连载15-return函数声明方式差异化回调函数