我在学习诺言;有人可以解释一下为什么这段代码不起作用的原因是我称 函数内部是否存在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>
答案 0 :(得分:1)
当您用价值解决问题时,您实际上是从诺言中返回了价值。在您的示例中,使用参数中的function进行解析,因此您的promise返回function(function add)
因此修改行,
resolve(add);
至
resolve(add());