繁体   English   中英

如何在自己的 class 中调用 new object 中的构造函数 function

[英]How to call constructor function inside new object in its own class

当我尝试在new Promise中调用this.logger.error()时,它不起作用。我如何在new Promise中调用this.logger.error() 据我所知, this指的是外部class,如何在内部调用logger Promise object。

export class MyClass {
    constructor(@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger) {}


    async uploadfile(buffer, key: string): Promise<string> {
            const params = {
                Body: buffer,
                Bucket: 's3Bucket',
                Key: key,
                ContentType: 'application/pdf',
                ACL: 'public-read',
            };
            const path: string = await new Promise((resolve, reject) => {
                s3.upload(params, function(err, data) {
                    if (err) {
                        this.logger.error('Error',err)
                        reject('Error occurred');
                    }
                    return resolve(data.Location);
                });
            });

            return path;

    }
}

关键字this只会绑定它所调用的 scope。 在不是 class 成员/实例的 function 中直接调用它会绑定到 function scope。您可以将this分配给变量并使用 Promise 中的变量

class Example {

instanceFunction(){
  const thisReference = this
  return new Promise((accept)=>{
  accept(thisReference)
})

}

以上是您将如何做的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM