从javascript中的回调函数返回值?

时间:2011-02-19 21:53:39

标签: javascript callback node.js translate

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


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

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


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

3 个答案:

答案 0 :(得分:4)

您正在执行该函数,您正在传递对匿名函数的引用。如果您想要返回值,请执行它:

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

答案 1 :(得分:3)

这不是一个问题,你能做到这一点,但你应该这样做吗?这真的是理解异步代码的问题,node.js的每一个介绍都涵盖了一些深度。

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

答案 2 :(得分:-1)

他们提供30种语言的翻译。我认为,这意味着通过调用Web服务进行翻译,对吧?也许node.js像其他语言一样提供类似“waitFor”的东西。但正如你所写,它是不可成功的