节点7.1.0新Promise()解析器undefined不是一个函数

lar*_*595 22 node.js promise

我在OSX上使用最新的节点版本7.1.0,但我仍然无法使用Promises.我明白了

index.js

new Promise();
Run Code Online (Sandbox Code Playgroud)

错误:

new Promise();
             ^
Run Code Online (Sandbox Code Playgroud)

TypeError:Promise resolver undefined不是函数

节点7.1.0不支持ES6和Promise吗?

Ben*_*aum 23

promises的API要求您将函数传递给promise构造函数.引用MDN:

new Promise(/*executor*/function(resolve,reject){...});

executor - 使用参数resolve和reject传递的函数.执行函数由Promise实现立即执行,传递resolve和reject函数(在Promise构造函数甚至返回创建的对象之前调用执行程序).调用时,resolve和reject函数分别解析或拒绝promise.执行程序通常启动一些异步工作,然后,一旦完成,调用resolve或reject函数来解析promise,否则在发生错误时拒绝它.

您可以在使用示例中看到此答案.

Node 7.1支持promises.


bpi*_*lva 20

您必须向Promise构造函数提供回调,以便它在解析或拒绝操作时知道该怎么做.

例如:

var p = new Promise((resolve, reject) => { 
    setTimeout(() => {
        resolve();
    }, 5000);
});

p.then(() => {
    console.log("Got it");
})
Run Code Online (Sandbox Code Playgroud)

5秒后,您将Got it在控制台中看到该消息.

Promises:Bluebird有一个非常好的图书馆

还要检查MDN文档.

我喜欢谷歌开发者的这篇文章.