gpt4 book ai didi

javascript - 无法在嵌套函数中访问 'this'

转载 作者:行者123 更新时间:2023-11-30 08:41:14 25 4
gpt4 key购买 nike

<分区>

所以我需要一些帮助我已经坚持了几个小时了..

问题是我正在创建这个名为 Rank 的对象。 Rank 需要在 mongodb 中执行一些 DB 调用以获取数据来填充矩阵,然后需要对该矩阵执行更多我尚未编写的嵌套函数调用。问题是,当我调用 doRank() 时,它会获取公司和交易,并且似乎将它们放在 Rank 中,但是当我调用 createMatrix 时,它无法访问“this”

我已经尝试在 doRank() 中的每个函数上使用 .bind(this) 来防止该方法不存在的错误,但是当我在 doRank() 的末尾执行 console.log 时,结果对于矩阵未定义。

function Rank(dampingfactor){
this.damping_factor = dampingfactor;
this.companies = null;
this.transactions = null;
this.matrix = null;

this.doRank(function(){
//companies returns valid
console.log(this.companies);
//transactions return valid
console.log(this.transactions);
//matrix returns as undefined... help here please
console.log(this.matrix);
});
};

Rank.prototype.doRank = function(callback) {
this.getTransactions(function() {
this.getCompanies(function () {
this.createMatrix(function(){
callback();
}.bind(this));
}.bind(this));
}.bind(this));
};

Rank.prototype.getTransactions = function(callback){
Transaction.find({}, function(err, transactions) {
//blah blah blah
this.transaction = transactions;
callback();
});
};

Rank.prototype.getCompanies = function(callback){
Company.find({}, function(err, comps) {
//blah blah blah
this.transaction = comps;
callback();
});
};

Rank.prototype.createMatrix = function(callback){
console.log(this.companies)
//this returns "null"
var matrix = new Array(_.size(this.companies));
for(var i = 0; i < _.size(this.companies); i++){
matrix[i] = new Array(_.size(this.companies));
for(var j=0; j < _.size(this.companies); j++){
matrix[i][j] = 0;
}
}
this.matrix = matrix;
callback();
};

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com