【发布时间】:2017-12-07 08:26:11
【问题描述】:
我想知道是否可以将回调的值分配给变量。我最近遇到了 MongoClient 的 connect 方法的问题,我想在其中获取 db 对象并将其传递给我的类方法。有没有办法我可以将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同步,那么为什么首先需要回调?
标签: javascript node.js express ecmascript-6 asynccallback