从JavaScript中的callback函数返回值?

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

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

然后使用结果? 它总是返回我“未定义”。 有没有办法使用这个结果而不做这个? :。

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

您不执行该函数,您传递一个匿名函数的引用。 如果你想要返回值,执行它:

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

这不是一个问题,你可以这样做,但你应该这样做。 这实际上是一个理解asynchronous代码的问题,对node.js的每个介绍都涵盖了一些深入的内容。

翻译本身使用谷歌的API,所以请求到另一台服务器。 如果你等待结果,那将是一个漫长的阻塞操作,这是不可取的。

他们提供30种语言的翻译。 我想,这意味着翻译是通过调用web服务来完成的,对吗? 也许node.js提供像“waitFor”一样的其他语言。 但是,如你所写,这是不可能的