【问题标题】:Define Promise As ES6 Class Method [closed]将 Promise 定义为 ES6 类方法 [关闭]
【发布时间】:2015-10-18 21:30:45
【问题描述】:

使用 ES6 语法定义类及其方法,如何将方法定义为 Promise,而不必将其包装在返回 Promise 的常规函数​​中?我想做如下的事情:

class PromiseMethod {

   promiseMethod = new Promise(function(resolve, reject) {
        return resolve();
   }
}

【问题讨论】:

  • “我如何将方法定义为 Promise” 方法(即函数)是可以调用的东西。 Promise 不能被调用。你想要的东西对我来说似乎没有多大意义。
  • 可能意味着一个属性?

标签: javascript node.js ecmascript-6


【解决方案1】:

Promises 只是一个从函数返回的对象——无论它是否是一个方法都无关紧要。试试这个:

class Something {
  promiseMethod () {
    return new Promise(...);
  }
}

(new Something).promiseMethod().then(...)

但也许您希望不必必须调用该方法并能够直接使用 Promise 方法?在这种情况下,它不是一个方法,它是一个属性

class Something {
  constructor () {
    this.promiseProperty = new Promise(...);
  }
}

(new Something).promiseProperty.then(...);

【讨论】:

  • 嗨,如果您需要链接另一个属于该类的 promise 方法怎么办。 (new Something).promiseMethod().then( (new Something).anotherPromiseMethod() ).then(...) ?
  • @shangyeshen 你真的应该问另一个问题,但考虑到洞察力是一样的…….then() 接受一个函数。 Promise 是一个对象。所以你需要.then(anotherFunction).then(() => anotherFunction())(它们做同样的事情,但第二种形式可以让你更好地控制参数,例如.then((a, b) => anotherFunction(b, a)))。
猜你喜欢
  • 2018-12-14
  • 2017-12-07
  • 2011-02-22
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多