超时的方法响应

时间:2018-07-18 10:18:55

标签: javascript reactjs

如果方法有一些延迟,如何使方法的响应进入变量(在我的示例中为控制台)?

testMethod = (number) => {

    setTimeout(function() {
         return number+number;      
    }.bind(this), 100);        
}

testMethod2 = (number) => {

         return number+number;              
}

调用函数

console.log(this.requests.current.testMethod(44)) 
console.log(this.requests.current.testMethod2(44))

testMethod返回未定义

testMethod返回88

如何从testMethod获得输出?

2 个答案:

答案 0 :(得分:0)

您没有从testMethod返回任何信息。由于setTimeout是异步的,因此您从testMethod返回的函数内部返回的内容不会从setTimeout返回。

您可以将promise或callback用于异步逻辑。

承诺

const testMethod = (number) => {
  return new Promise(resolve => {
    resolve(number + number);
  }, 100);    
}

testMethod(44).then(console.log);

回调

testMethod = (number, callback) => {
  setTimeout(() => {
    callback(number + number);      
  }, 100);        
}

testMethod(44, console.log)

答案 1 :(得分:0)

问题是您的函数testMethod不返回任何内容,即未定义 您可以按照Tholle使用promise的建议使用:

testMethod = (number) => {
    return new Promise((resolve) => {
          setTimeout(function() {
             resolve(number + number);      
          }, 100); 
    });       
}

testMethod2 = (number) => {
         return number+number;              
}

this.requests.current.testMethod(44).then((res) => {
  console.log(res);
})
console.log(this.requests.current.testMethod2(44))