【问题标题】:Javascript Promise within Class类中的 Javascript Promise
【发布时间】:2022-02-17 02:47:56
【问题描述】:

今天的 promises 很有趣...我想弄清楚为什么我不能参考 this.promise 来用另一种方法解决它,它总是 null。

感谢任何启发:)

export default class Example {
  constructor() {
    this.promise = null
  }

  test() {
    this.promise = new Promise((resolve, reject) => {
      this.something()
    }).then(resolve => {
      // resolved, do something else
    }).catch(reject => {
      console.log('reject', reject)
    })
  }

  something() {
    this.promise.resolve()
  }
}

【问题讨论】:

  • Promise.resolve 是静态方法,不是实例方法。尝试拨打resolve 会导致问题。如果您甚至尝试在浏览器工具中执行const promise = new Promise(resolve => resolve('foobar'))promise.resolve 会输出什么?也许在something() 中你实际上是我猜你可以将resolve 作为参数传递给something,但你总是可以在第一个then() 中返回一个承诺,作为来自something() 的承诺.
  • 啊!谢谢。

标签: javascript node.js ecmascript-6 promise es6-promise


【解决方案1】:

您正在尝试在something 中使用this.promise,然后它的值从null 更改。另一种方法是将resolve 作为参数传递:

class Example {
  constructor() {
    this.promise = null;
  }
  test() {
    this.promise = new Promise((resolve, reject) => {
      this.something(resolve);
    }).then(result => {
      console.log('resolve', result);
    }).catch(error => {
      console.log('reject', error);
    });
  }
  something(resolve) {
    resolve(1);
  }
}
const example = new Example();
example.test();

【讨论】:

  • 谢谢你的例子,我现在明白了 :)
猜你喜欢
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多