延迟函数返回。

无论如何,都可以使用
setTimeout()
来延迟函数的返回。
function foo(){
  window.setTimeout(function(){
      //do something
  }, 500);
 //return \"some thing but wait till SetTimeout() finished\";
}
    
已邀请:
        
.setTimeout()
用于超时后运行完整功能。它不是用于延迟代码。 https://developer.mozilla.org/En/Window.setTimeout 一个很好的链接是:sleep()的JavaScript版本是什么? (要问的一个好问题是,为什么您需要睡眠?)     
        您不想“延迟”代码,因为它会锁定浏览器线程,从而使整个浏览器在脚本超时之前无法使用。 您可以设置一个事件,以监听经过一段时间后发出的信号。 jQuery
.bind()
.trigger()
是您想要的http://api.jquery.com/trigger/ 或者,您可以使用回调函数在经过一段时间后使用所需的数据。因此,如果您打算像这样:
function myFunc() {
  doStuff();
  result = delayProcess(5000);
  $(\'#result\').html(result);
}

function delayProcess(delay) {
  // magic code that delays should go here
  return logic;
}
应该是这样的:
function myFunc() {
  doStuff()
  delayProcess(5000, function(result){ // Notice the callback function pass as an argument
    $(\'#result\').html(result);    
  });
}

function delayProcess(delay, callback) {
  result = logic;
  setTimeout(function(){
    callback(result);
  });
}
    
        只需在超时函数的末尾调用超时后要发生的事情即可,如下所示:
function foo()
{ 
    window.setTimeout(function()
    { 
        //do something

        delayedCode(returnValue); 
    }, 500); 

    return
}

function delayedCode(value)
{
    // do delayed stuff
}
而不是返回。将依赖于返回值的代码放入
delayedCode()
,并将参数传递给函数。     
        使用承诺:
const fetchData = () =>
  new Promise(resolve => (
    setTimeout(() => resolve(apiCall()), 3000);
  ));
感谢@NikKyriakides指出了更新更新的答案,后者指出不需要异步/等待。我最初有10英镑。     

要回复问题请先登录注册