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
中查看更多详细信息。
我找到了这个代码片段。有人可以在这种情况下解释 .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
中查看更多详细信息。