2016-09-15 50 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函數內使用同步代碼調用異步函數。

相關問題