promise为什么可以这么写?

今天在看别人的博客发现了Promise的这样的写法:

Promise.resolve(1).then(function(data){
    console.log(data);
});

我平时写的时候都是用了new:

new Promise();

请问这样写区别是什么。为什么可以这么写?
前端小白,各位大神指点下。谢谢了。
我需要恶补哪些方面的知识?

阅读 3k
4 个回答

Promise 作为一个对象,具有 resolve 这个方法也正常啊。。。
感觉题主这个用例只是为了得到一个可以 then 的函数式的对象而已:

Premise.resolve(1)
    .then(anotherPromise)
    .then(andAnother)
    .then()

本人当初也翻译过:使用 ES2017 Async 函数,从回调地狱到 promiseasync/await。当然中间还差了个 Generator,这个去看阮一峰的连载文就行了:
Generator函数的含义与用法
Thunk函数的含义与用法
co函数库的含义与用法
async函数的含义与用法

Promise.resolve(xx)

等价于

new Promise((resolve)=>{resolve(xx)})

是一样的,都是返回Promise对象

Promise.resolve(data)就相当于平时写的new Promise((resolve, reject) => { resolve(data) })。两者是同样作用的,你可以去看看阮一峰老师的ES6教程,同时还有async,await的用法,也是为了解决异步回调地狱的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题