
本文将介绍如何使用 Promise 在 JavaScript 计算器类中实现异步计算功能。我们将分析现有代码的问题,并提供一个简洁、高效的解决方案,确保计算在成功时返回结果,并在出现错误时拒绝 Promise 并返回 NaN。
原代码中的 calculate 函数存在以下几个主要问题:
以下是一个使用 async/await 简化 Promise 处理的 calculate 函数实现:
class Calculator{
constructor(){
this[Symbol.toStringTag] = 'Calculator';
}
add(a, b) {
return a + b;
}
subtract(a, b) {
return a - b;
}
multiply(a, b) {
return a * b;
}
divide(a, b) {
if(b === 0){
return NaN;
}
return a / b;
}
toString(){
return "Calculator";
}
async calculate(f) {
try {
return f.call(this);
} catch {
throw NaN;
}
}
}代码解释:
const calculator = new Calculator();
calculator.calculate(function() {
return this.add(1, 2) + this.multiply(3, 4);
})
.then(result => {
console.log("计算结果:", result); // 输出:计算结果: 15
})
.catch(error => {
console.error("计算出错:", error);
});
calculator.calculate() // 传入undefined,会报错
.then(result => {
console.log("计算结果:", result);
})
.catch(error => {
console.error("计算出错:", error); // 输出:计算出错: NaN
});通过使用 async/await 和 try...catch 块,我们可以简洁、高效地实现计算器类中的异步计算功能。 这种方法不仅代码可读性高,而且能够正确处理计算过程中可能发生的错误,确保 Promise 在成功时返回结果,并在出现错误时拒绝 Promise 并返回 NaN。
以上就是使用 Promise 实现计算器中的异步计算的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号