我们知道,下面的this
指的是window
对象。我想知道的是如何在不求助于 var self=this;
技巧的情况下传递我的 this
上下文。有任何想法吗?我尝试将 .bind() 添加到第 9 行的末尾,使其显示为 }).bind(this);
但这也不起作用。
有什么想法吗?
QueueService.prototype.FillCompanyQueue = function(companies) {
return Promise.map(companies, function (company_batch) {
var params = {
Entries: company_batch,
QueueUrl: Config.get("AWS-Queue.Company")
};
return this._sqs.sendMessageBatchAsync(params);
});
};
编辑:我标记了它,但应该提到我正在使用 Bluebird。
编辑:修正了一个拼写错误。
最佳答案
你可以使用 Bluebird's bind function :
QueueService.prototype.FillCompanyQueue = function(companies) {
return Promise.resolve(companies).bind(this).map(function(company_batch) {
var params = {
Entries: company_batch,
QueueUrl: Config.get("AWS-Queue.Company")
};
return this._sqs.sendMessageBatchAsync(params);
});
};
如果您在 promise 链的延续中不需要外部上下文,我不确定它是否比“求助于 var self=this;
技巧”好多少。
当然,如果你使用的是 ES6,你也可以简单地使用一个箭头函数:
QueueService.prototype.FillCompanyQueue = function(companies) {
return Promise.map(companies, (company_batch) => {
var params = {
Entries: company_batch,
QueueUrl: Config.get("AWS-Queue.Company")
};
return this._sqs.sendMessageBatchAsync(params);
});
};
关于javascript - 如何访问 Promise.map 中的 'this'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29973738/