调用内部函数解析

时间:2019-10-11 10:27:40

标签: javascript promise

我在学习诺言;有人可以解释一下为什么这段代码不起作用的原因是我称 函数内部是否存在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>

1 个答案:

答案 0 :(得分:1)

当您用价值解决问题时,您实际上是从诺言中返回了价值。在您的示例中,使用参数中的function进行解析,因此您的promise返回function(function add)

因此修改行, resolve(add);resolve(add());