2016-09-15 107 views
0

我有这行代码:如何从回调中获取值?

let message = channel.consume(queue, msg => { 
    console.log('Return this in the "message" variable', msg.content); 
}); 

当我试图登录的message的价值,它并不等同于msg.content但它会从consume方法的返回值。为了让我从回调中获得正确的价值,什么是解决方法。

感谢

+0

我根本不关注你问的问题。我不知道'channel.consume()'返回并发送到回调函数,所以你必须先解释它。然后,解释你到底想要发生什么。 – Brad

+0

有人需要为包含协程,异步/等待和承诺的异步函数编写新的通用答案。 – slebetman

回答

1
var message; 
channel.consume(queue, msg => { message = msg.content; }); 

不是真的知道你是问什么,但你想在回调中设置邮件?如果是这样,请参阅上文。

+0

不错!我忘了试一试。谢谢! – Jhn

+0

只要确保您意识到这不能保证是同步的。我不知道*消费*是什么,但即使代码*消息*可能似乎在加载之后,除非消费*是阻塞函数,否则其他代码在消息*填充之前可能会执行。 – vol7ron

0

您不能“返回”回调的值。而且,这样做没什么意义,因为在代码执行之后,该代码将在执行回调之前执行。

虽然它不是“返回”的值,但可以使用Promise

如果您可以从ES7进行转储,则可以使用async-await,它允许您使用awaitasync函数内使用同步代码调用异步函数。

相关问题