如果方法有一些延迟,如何使方法的响应进入变量(在我的示例中为控制台)?
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获得输出?
答案 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))