2017-07-01 41 views
0

为什么resolve未在下面的代码中通过myFunction内部的闭包定义?为什么解析没有通过在一个promise中调用的函数中的闭包来定义?

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

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

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

'resolve'是在范围限定。 'myFunction'没有在该范围内定义。这里没有什么特别的承诺;这就是示波器的工作原理。 – Ryan

+2

你知道一个编程语言哪里可以工作吗? – Pointy

+0

[解决Javascript Promise函数范围外]可能的重复(https://stackoverflow.com/questions/26150232/resolve-javascript-promise-outside-function-scope) –

回答

4

因为这只是在JavaScript中如何工作。范围是词法的事情,这意味着重要的不是调用/调用环境之间的动态关系,而是代码的结构和声明的嵌套。

可以当然明确的resolve函数引用传递给其他功能:

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

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

是的,我知道关于词法作用域,我错过了事实上,myFunction2是在myFunction之外定义的,因此调用它的位置并不重要。现在澄清。 – evianpring

相关问题