Promise.resolve()和Promise(resolve => resolve())之间的区别

时间:2019-01-27 17:32:17

标签: javascript ecmascript-6 promise async-await

我发现一些具有相同行为的代码段,但是从函数中解析promise的语法不同:

return new Promise(resolve => resolve(fruits[name]))

return Promise.resolve(fruits[name])

两者之间有什么区别?

1 个答案:

答案 0 :(得分:0)

它们都具有相同的功能,但其中一个是Promise类上的静态方法。该: new Promise(resolve => resolve(perams))创建一个仅传递resolve参数的新promise(而不是传递resolve和拒绝),然后立即解析该Promise。 Promise.resolve()是Promise类上的静态方法,其工作方式基本上相同。

做出承诺后,将solve函数传递到promise中,因此Promise.resolve()将立即调用该函数,而不必将其作为参数传递。

您可以将Promise类想象成这样

class Promise {
  constructor(func) {
    func(Promise.resolve(), Promise.reject())
  }

  static resolve(value) {
    //resolve code
  }

  static reject(vale) {
    //reject code
  }
  //other methods
}

它很可能并非完全像这样,但是已经足够接近了。

相关问题