为什么解决方案没有通过在promise中调用的函数内的闭包来定义?

时间:2017-07-01 23:18:46

标签: javascript promise

为什么resolve未在下面的代码中通过myFunction内的闭包来定义?

const myFunction = () => {
  resolve();
}

const p = new Promise((resolve) => {
  myFunction();
}

(node:1232) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: resolve is not defined

1 个答案:

答案 0 :(得分:4)

因为这不是JavaScript中的范围界定方式。范围界定是词汇的事情,这意味着重要的不是调用/调用环境之间的动态关系,而是代码的结构和声明的嵌套。

您当然可以明确地将resolve函数引用传递给另一个函数:

const myFunction = (resolve) => {
  resolve();
}

const p = new Promise((resolve) => {
  myFunction(resolve);
})