javascript - setTimeout返回

bob*_*bob 3 javascript jquery settimeout

如果我想返回一个值,我该如何使用setTimeout

$.each(pCodes, function(index, pCode) {
    setTimeout(func(parm1), 2000);      
});


function func(in)
{
  var value = 999;
  return value;
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 11

首先,你的来电setTimeout是错误的.您正在调用该函数func,然后使用该setTimeout方法中的结果.您的代码相当于:

$.each(pCodes, function(index, pCode) {
  var temp = func(parm1);
  setTimeout(temp, 2000);      
});
Run Code Online (Sandbox Code Playgroud)

作为func回报999,你将会做setTimeout(999, 2000),这当然没有意义.要调用一个带有参数setTimeout的函数,需要一个函数来调用该函数:

$.each(pCodes, function(index, pCode) {
  setTimeout(function() { func(parm1); }, 2000);
});
Run Code Online (Sandbox Code Playgroud)

处理返回值func有点复杂.正如稍后调用的那样,您必须稍后处理返回值.通常,这是通过在返回值可用时调用的回调方法完成的:

var callback = function(value) {
  // Here you can use the value.
};
$.each(pCodes, function(index, pCode) {
  setTimeout(function() { func(parm1, callback); }, 2000);
});

function func(in, callback) {
  var value = 999;
  callback(value);
}
Run Code Online (Sandbox Code Playgroud)