我想知道是否有可能將回調的值分配給一個變量。我最近遇到了MongoClient的連接方法問題,我想要獲取數據庫對象並將其傳遞給我的類方法。有沒有一種方法可以將hello world
指定爲var b
。打破回調鏈 - 節點
function testCB(cb){
setTimeout(() => {
cb('Hello World')
}, 1000)
}
let b = testCB('a', (str) => {
return str;
})
console.log(b) //undefined
使用異步方法(setTimeout是異步的)意味着您必須編寫代碼來處理異步...沒有什麼能夠將異步代碼更改爲同步 - 另外,'testCB'函數甚至沒有return語句,所以它永遠不會返回任何東西 –
你可以把'b = str;'放在回調中,但是'console.log(b)'仍然會顯示'undefined',因爲它在回調運行之前運行。想一想:如果你可以以某種方式神奇地將回調中的值分配給'b' *同步*,爲什麼你需要首先回調? –