首页 > 解决方案 > 在 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>

标签: javascriptpromise

解决方案


当你用价值解决时,你实际上是从承诺中返回价值。在您的示例中,您使用参数中的函数解析,因此您的承诺返回 function(function add)

所以修改行, resolve(add);resolve(add());


推荐阅读