6

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


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

然后使用结果?它总是返回我“未定义”。有没有办法在不这样做的情况下使用结果?: .


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

4

3 回答 3

4

您没有执行该函数,而是传递了对匿名函数的引用。如果你想要返回值,执行它:

function traduce(text){
    translate.text(text, (function(err,result){
        return result;
    })());
}
于 2011-02-19T22:10:14.580 回答
3

不是你能做到这一点的问题,而是你是否应该这样做。这实际上是理解异步代码的问题,每个对 node.js 的介绍都深入介绍了这一点。

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

于 2011-02-19T22:11:52.437 回答
-1

他们提供 30 种语言的翻译。我想,这意味着翻译是通过调用网络服务进行的,对吧?也许 node.js 提供了类似其他语言的“waitFor”之类的东西。但是正如您所写的那样,它是无法完成的

于 2011-02-19T22:09:48.973 回答