如何在typescript中的构造函数内的变量中赋值promise的结果?[duplicate]

rxztt3cl  于 2023-01-21  发布在  TypeScript
关注(0)|答案(1)|浏览(168)
    • 此问题在此处已有答案**:

Is it bad practice to have a constructor function return a Promise?(5个答案)
昨天关门了。
如何在typescript的构造函数中赋值一个变量的承诺结果?
我使用adonisjs从数据库中收集数据,但是它使用了一个promise从数据库中收集信息。
如何将结果放入变量中?
我需要这个变量在构造函数中。
下面是代码。

private teste1: any
  private teste2: any

  constructor(protected ctx: HttpContextContract) {
    
   Database.from('estoquepas').then(res => {
     this.teste1 = res;
     console.log(res)
   })

    Estoquepas.findBy('siagreId', this.IDSiagre.siagreId).then(res => {
      this.teste2 = res;
      console.log(res)
    })

    console.log(this.teste1)
    console.log(this.teste2)
  }

显示了consule内部的内容,但变量teste1和teste2未显示且未定义。
有谁能帮上忙这个问题,提前感谢您的关注。

jq6vz3qz

jq6vz3qz1#

你能做的就是在你的类上创建一个静态异步方法和一个哑构造函数,它只对你给予它的值赋值(在加载函数完成异步操作之后):

class Something {
    constructor (
        protected ctx: HttpContextContract,
        private teste1: any,
        private teste2: any
    ) { }

    static async load(ctx: HttpContextContract) {
        const [ teste1, teste2 ] = await Promise.all[ Database.from('estoquepas'), Estoquepas.findBy('siagreId', IDSiagre.siagreId) ]

        return new this(ctx, teste1, teste2)
    }
}

相关问题