JavaScript中回调函数的返回值是什么?

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

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

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

translate.text(text,function(err,result){
     // 使用结果
     // 一些逻辑
});


你能提供一些例子,展示你希望如何使用traduce函数吗?可能有一种异步的方式可以实现你想要的功能。 - DigitalDan
3个回答

4

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

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

2
translate.text 接受一个函数作为其第二个参数。 - Wayne

3

重点不在于你能不能做到这个,而是你是否应该这么做。这实际上涉及到了异步编码的理解,这是每个node.js介绍都会深入讲解的内容。

Translate本身使用了谷歌API,因此需要向另一个服务器发送请求。如果你要等待结果,那将是一项漫长的阻塞操作,这是不可取的。


-1

他们提供30种语言的翻译。我认为,这意味着翻译是通过调用Web服务来完成的,对吗?也许node.js提供了类似于其他一些语言中的“waitFor”的东西。但正如你所写的那样,这是不可实现的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接