如何从NodeJS的setTimeout函数获取数据

有时在nodejs中,我必须向其他主机发出请求。 我的function必须等待,直到这个请求的响应完成,但通常他们来到下一行,没有任何等待完成。 为了简化问题,我做了一个简单的snipp代码,我想知道如何从这个函数中获取数据

function testCallback(){ var _appData; setTimeout(function(){ var a = 100; getData(a); }, 200); function getData(data){ _appData = data; } return _appData; } console.log('testCallback: ', testCallback()); 

console.log发出undefined,我想用这个函数知道如何得到结果是100

基本上setTimeout是asynchronous的,所以代码不断,你的代码变成了,实际上是这样的:

 function testCallback(){ var _appData; return _appData; } 

哪个,是的,这是不确定的,因为你没有设置任何东西。

你所要做的就是在你的函数中使用callback函数,所以当长时间的任务(setTimeout)完成时,你会返回数据。

像这样的东西:

 function testCallback(cb){ setTimeout(function(){ var a = 100; getData(a); }, 200); function getData(data){ cb(null, data); } } 

而在调用它的时候,你必须传递一个函数作为参数(callback标准有2个参数,(err,value)。)

 testCallback(function(err, value) { console.log(value); });