javascript - 如何内联多次调用类方法(链式调用)JavaScript es6

标签 javascript ecmascript-6 es6-class

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

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

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

邮件.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;
        }


    }
}

最佳答案

您需要确保附件return 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');
})();

每当您想要定义要链接的方法时,请遵循相同的模式 - 在最后返回此以返回实例化的对象。

关于javascript - 如何内联多次调用类方法(链式调用)JavaScript es6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722196/

相关文章:

javascript - 对象数组 - 计算属性的平均值?

javascript - Jest ES6 错误意外 token 导入?

javascript - JS ES6 类构造函数行为

javascript - 硬编码 Javascript 构造函数参数禁忌?

javascript - Flowtype:不安全的实例变量访问

javascript - 如何在动态添加的内容上运行 jQuery?

javascript - JQGrid动态行可编辑

javascript - Angular 1.5(组件): how to use directives with es6?

javascript - 我怎样才能让 redux 派发一个 Action 并返回一个 promise ?

javascript - 没有回发的文本框上的 ASP.NET 客户端验证