如何内联(链调用)对类方法进行多次调用

时间:2018-08-07 08:26:20

标签: javascript ecmascript-6 es6-class

我尝试内联调用一个类的方法,而第二个方法未定义。

如何在ES6类中实现此模式?

await new Mail().attachments(files).send()

mail.js

export class Mail{

    constructor(){
      this.mail =  {
         *********
         ********* 
      };
    }


    attachments(files){
      *********
      ********* 
    }

    async send(){
        try{
            return await sendmail(this.mail, function(err) {
                if(err){
                    return false
                };
                return true;
            });
        }catch(e){
            throw e;
        }


    }
}

1 个答案:

答案 0 :(得分:5)

您需要确保attachmentsreturn this结尾,以便在其后链接方法:

const sendmail = () => new Promise(res => setTimeout(res, 1000));
class Mail {
  constructor() {
    this.mail = 'mail';
  }
  attachments(files) {
    console.log('adding attachments');
    return this;
  }
  async send() {
    console.log('sending...');
    return sendmail(this.mail);
  }
}
(async() => {
  console.log('start');
  const files = 'files';
  await new Mail().attachments(files).send()
  console.log('end');
})();

每当您要定义要链接的方法时,都遵循相同的模式-最后是return this,以返回实例化的对象。