Javascript 函数返回后如何执行回调

Javascript 函数返回后如何执行回调,javascript,Javascript,我无法处理回叫。这里有一个简单的例子来说明我的困惑。返回getData后需要调用回调printData function data(cb) { var myData = getData(); cb(myData); } function printData(data) { console.log("printing " + data) } function getData () { console.log("getting data");

我无法处理回叫。这里有一个简单的例子来说明我的困惑。返回getData后需要调用回调printData

function data(cb) {

   var myData = getData();  
    cb(myData);
}

function printData(data) {

    console.log("printing " + data)   
}

function getData () {

    console.log("getting data");

    setTimeout(function(){
        console.log("finishing data");
        return "this is the data"
    }), 3000;
}

data(printData);

//OUTPUT

//getting data
//printing undefined
//finishing data

您可以将函数更新为以下内容

function data(cb) {

   getData(cb);  // pass the callback function

}

function printData(data) {

    console.log("printing " + data)   
}

function getData (cb) {

    console.log("getting data");

    setTimeout(function(){
        console.log("finishing data");
        cb("this is the data"); // call the callback function
        //return "this is the data" // this return is useless, remove it
    }), 3000;
}

data(printData);

作为参考-

getData
会立即返回。
setTimeout
回调中的
return
无效
getData
也需要回调。看看这个:为什么需要回调?在您的代码中,它似乎一点用处都没有。