在Promise或Callbacks(JavaScript ES6)中处理此问题的正确方法

在Promise或Callbacks(JavaScript ES6)中处理此问题的正确方法,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,有没有正确或“更好”的方法来处理这个是带有in-promission(甚至回调)的JavaScript类 目前我只是通过这样做来解决这个问题 var self = this; 但我觉得这很“骇客” 忽略下面的大部分代码,这只是为了让大家明白我的观点 类的东西{ 拖拉物{ console.log(东西); } 更新(事物){ var self=this;//更好的方法 返回新承诺(函数(解析){ setTimeout(函数(){ 自我吸引物(物); 还决心(事); },2000); });

有没有正确或“更好”的方法来处理
这个
是带有in-promission(甚至回调)的JavaScript类

目前我只是通过这样做来解决这个问题

 var self = this;
但我觉得这很“骇客”

忽略下面的大部分代码,这只是为了让大家明白我的观点

类的东西{
拖拉物{
console.log(东西);
}
更新(事物){
var self=this;//更好的方法
返回新承诺(函数(解析){
setTimeout(函数(){
自我吸引物(物);
还决心(事);
},2000);
});
}
}
var t=新事物();

t、 updatethings('hello')。然后(console.log)箭头函数将为您执行此操作。 查看一些解释和说明

下面是一个更正的片段:

类的东西{
拖拉物{
console.log(东西);
}
更新(事物){
//阿罗函数
返回新承诺((解决)=>{
//另一支箭
设置超时(()=>{
//由于箭头函数的作用域,`this`通过。
这件事;
还决心(事);
},2000);
});
}
}
var t=新事物();
t、 updatethings('hello')。然后(console.log);

箭头函数将为您执行此操作。 查看一些解释和说明

下面是一个更正的片段:

类的东西{
拖拉物{
console.log(东西);
}
更新(事物){
//阿罗函数
返回新承诺((解决)=>{
//另一支箭
设置超时(()=>{
//由于箭头函数的作用域,`this`通过。
这件事;
还决心(事);
},2000);
});
}
}
var t=新事物();
t、 updatethings('hello')。然后(console.log);

尝试使用lambda/arrow函数:

updatethings(thing) {
      return new Promise((resolve) => {
           setTimeout(() => {
               this.drawthing(thing);
               return resolve(thing);
           },2000);
      });
  }

尝试使用lambda/arrow函数:

updatethings(thing) {
      return new Promise((resolve) => {
           setTimeout(() => {
               this.drawthing(thing);
               return resolve(thing);
           },2000);
      });
  }
如果您的方法drawthing()将抛出任何异常或错误,那么您的承诺将永远无法得到解决,最终将抛出异常

t.updatethings('hello').then(console.log).catch((err)=> {console.log("handle error")});
您还应该在出现异常时处理拒绝案例,如

 updatethings(thing) {
      var self = this;  //a better way to do this
      return new Promise((resolve, reject)=>{
           setTimeout(()=>{
              try{
                self.drawthing(thing);

              }catch(err){ return reject(err);}

              return resolve(thing);

           },2000);
      });
  }
在调用方法的同时,还应该捕获异常

t.updatethings('hello').then(console.log).catch((err)=> {console.log("handle error")});
如果您的方法drawthing()将抛出任何异常或错误,那么您的承诺将永远无法得到解决,最终将抛出异常

t.updatethings('hello').then(console.log).catch((err)=> {console.log("handle error")});
您还应该在出现异常时处理拒绝案例,如

 updatethings(thing) {
      var self = this;  //a better way to do this
      return new Promise((resolve, reject)=>{
           setTimeout(()=>{
              try{
                self.drawthing(thing);

              }catch(err){ return reject(err);}

              return resolve(thing);

           },2000);
      });
  }
在调用方法的同时,还应该捕获异常

t.updatethings('hello').then(console.log).catch((err)=> {console.log("handle error")});

为什么不直接使用箭头功能呢?您的编辑使此问题过时。你基本上通过编辑回答了你的问题。你的权利,每天学习;)我只是在片段中尝试了一下,我返回了下面的答案,为什么不使用箭头函数呢?您的编辑使此问题过时。你基本上通过编辑回答了你的问题。你的权利,每天学习;)我只是在片段中尝试一下,我把它返回给它,以接受下面的答案。我把所有的错误处理等都处理掉了,只是想弄清楚如何删除“var self=this”行。我以为你只是在检查方法。因此,我举了一个例子干杯我把所有的错误处理等都拿出来了,只是想弄清楚如何删除“var self=this”行,我以为你只是在检查方法。因此,我举了一个例子干杯这让人觉得它缺少了一些可以帮助人们学习绑定函数和静态方法的有效信息。我引用了另一篇文章,比我更好地概括了这些信息,没有理由在这里复制它。这感觉它缺少了一些可以帮助人们学习绑定函数和静态方法的有效信息。我引用了另一篇文章,比我更好地概括了这些内容,没有理由在这里复制它。