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