编程语言
首页 > 编程语言> > JavaScript-在匿名和异步功能上绑定此关键字

JavaScript-在匿名和异步功能上绑定此关键字

作者:互联网

JavaScript中,我正在寻找在匿名和异步函数上使用bind()的方法.

例:

exports.foo = function () {};

exports.foo.prototype = {
  load : function(id) {
    var query = new Parse.Query("SomeObject");
    query.get(id).then(function(object) {
      this.object = object; // this is the wrong this
    });
  }
};

我通过使函数成为非匿名函数来完成这项工作,但是我认为这会使我的代码看起来丑陋.特别是连续拥有4个不同的匿名函数之后.

exports.foo = function () {};

exports.foo.prototype = {
  load : function(id) {

    function _load(object) {
      this.object = object;
    }
    var _loadThis = _load.bind(this);

    var query = new Parse.Query("SomeObject");
    query.get(id).then(_loadThis);
  }
};

有没有更好的办法?

解决方法:

好吧,它不一定“更好”,但是您可以在函数实例化表达式的右括号后直接调用.bind():

query.get(id).then(function(object) {
  this.object = object; // this is the wrong this
}.bind(this));

函数实例化表达式为您提供了一个函数对象引用,因此放置了.之后,调用bind是有意义的.因此,传递给.then函数的是从对.bind的调用返回的值.

标签:parse-platform,mongodb,asynchronous,promise,javascript
来源: https://codeday.me/bug/20191030/1964637.html