将承诺处理程序绑定到其类的更好方法
Better way of binding a promise handler to its class
我有一个类,它有一个样板函数来处理我的承诺中的错误。
export class AuthError {
constructor () {
this.foo = "Something important!";
}
catch (e) {
if (e.hasAProblem) this.foo.bar();
}
}
我的问题是,当我在其他类中使用此函数作为处理程序时,它当然绑定到 window。
myFunApiCall('baz').catch(authError.catch);
我可以用.bind
来解决这个问题
myFunApiCall('baz').catch(authError.catch.bind(authError));
但我真的不喜欢这种语法,尤其是当我知道我的 catch 函数永远不会希望this
引用其类以外的任何内容时。
有没有办法给我的函数一个永久的this
引用它的类?
如果在构造函数中定义 catch
方法,则可以通过以下方式声明方法强制将方法绑定到其对象:
function AuthError() {
this.foo = "Something important!";
this.catch = function() {
// use this here
}.bind(this);
}
var authError = new AuthError();
myFunApiCall('baz').catch(authError.catch);
这使得该类型的每个对象上的每个.catch()
方法都是预绑定到它来自的实例的唯一函数。
相关文章:
- 在JavaScript中拆分日期字符串的更好方法是什么
- 设置嵌套对象属性的更好方法
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 将数组从javascript格式化为php的更好方法,反之亦然
- jquery:将动画绑定到滚动条位置的更好方法
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 编写if-else语句的更好方法
- 传递promise回调方法的更好方法
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 从网页获取数据的更好方法,而不是使用DOM和HTML元素
- Backbone js代码气味-嵌入子视图的更好方法
- 从数组中删除项的更好方法
- 对多维数组进行分组的更好方法
- 在node.js和express中基于路径运行不同数据库查询的更好方法
- 动态更改测试中代码覆盖率的require语句的更好方法
- 设计具有数据持久性的web应用程序的更好方法
- 选择表行的更好方法
- 在nodejs服务器上提供文件的更好方法,而不是if/else
- Javascript;Ajax——填充对象的更好方法