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

时间:2015-09-16 12:56:59

标签: node.js

有时在nodejs中我必须向其他主机发出请求。我的功能必须等到这个请求的响应完成,但通常他们来到下一行而没有等待完成。 为了简化问题,我制作了一个简单的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

1 个答案:

答案 0 :(得分:3)

基本上setTimeout是异步的,所以代码会继续运行,代码就会变成这样:

function testCallback(){
    var _appData;

    return _appData;
}

其中,是的,它未定义,因为您没有设置任何内容。

您需要做的是在函数中使用回调,因此当完成长任务(setTimeout)时,您将返回数据。

这样的事情:

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

并且在调用它时你必须传递一个函数作为参数(回调标准有2个参数,(错误,值)。)

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