从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中的回调函数返回值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章