bind() on promise 错误函数 - javascript

bind() on promise error function - javascript

我找到了这个代码片段。有人可以在这种情况下解释 .bind(this) 的目的吗?我们现在可以在哪里访问 this?在已解决的承诺中?

get: function(endpoint, params, callback) {
  var cb = callback || angular.noop;
  var deferred = $q.defer();

  $http.get(
    endpoint,
    params
  ).
  success(function(data) {
    deferred.resolve(data);
    return cb();
  }).
  error(function(err) {
    deferred.reject(err);
    return cb(err);
  }.bind(this));

  return deferred.promise;
}

函数对象的bind(newContext)方法的目的是return一个以上下文this作为第一个参数传递给bind()的新函数。

例如:

var message = {text: 'I am the context'};

function tryMe() {
  console.log(this);
}

tryMe(); // will print undefined (in strict mode) or global object
tryMe.bind(message)(); // will print '{text: 'I am the context'}'

在您的示例中,使用 bind() 的想法是在错误处理程序中保留 get() 方法的上下文 this

.error(function(err) {
    deferred.reject(err);
    //now use this.get() for example
    return cb(err);
  }.bind(this));

但是在处理程序中没有调用与新上下文关联的方法。

Gentle explanation of this 中查看更多详细信息。