从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”一样的其他语言。 但是,如你所写,这是不可能的