return语句不适用于setTimeout()

时间:2018-12-26 10:04:50

标签: javascript return settimeout

为什么retrun语句将不返回x

function getData(cb) {
    setTimeout(cb, 1000);
}

getData(function () {
    var x = 10;
    return x;
})

2 个答案:

答案 0 :(得分:0)

因为您的getData函数未返回任何内容。 setTimeout正在调用另一个正在返回内容的函数。这是一个不同的功能。 JS在setTimeout内部的函数执行之前很久就为getData返回了值。

答案 1 :(得分:-1)

回调函数通常从不返回值,而是将值作为参数传递。

function getData(cb) {
    setTimeout(function(){
      var data = 'Here is the data';
      cb(data);
    }, 1000);
}

getData(function(data){
  console.log(data);
});