我尝试内联调用一个类的方法,而第二个方法未定义。
如何在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;
}
}
}
答案 0 :(得分:5)
您需要确保attachments
以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');
})();
每当您要定义要链接的方法时,都遵循相同的模式-最后是return this
,以返回实例化的对象。