javascript - 在 resolve 中调用函数
问题描述
我正在研究承诺;谁能解释我为什么这段代码不起作用是我在解析中调用函数 add() 吗?
<script>
async function f() {
function add() {
return 14+3;
}
let promise = new Promise((resolve, reject) => {
setTimeout(()=>{resolve(add)}, 3000); //this doesn't work
setTimeout(()=>{resolve(14+3)}, 3000); // this works
});
let result = await promise;
alert(result);
alert ("END");
}
f();
</script>
解决方案
当你用价值解决时,你实际上是从承诺中返回价值。在您的示例中,您使用参数中的函数解析,因此您的承诺返回 function(function add)
所以修改行,
resolve(add);
到
resolve(add());
推荐阅读
- android - 谷歌 Playstore 是否会对销售杂货等非数字商品的应用程序收费
- javascript - 财产不承认
- c - 如何比较 POSIX ACL?
- java - 在 Tomcat 上部署 ncWMS2 WAR
- ios - iOS Share Extension,获取共享Item的标题
- python - 如何访问和重新配置它定义的功能之外的任何小部件?
- javascript - 如何启用双鼠标指针/双鼠标指针
- html - 可以“定位:粘性;” 和“溢出-x:自动;” 可以一起使用吗?
- java - 这个程序的时间复杂度模型是多少?
- angular - 测试 getLocaleFirstDayOfWeek