Sea*_*ndo 6 javascript node.js promise lodash bluebird
以下是我的代码示例:
function QueueService() {
var key = Config.get("AWS.accessKeyID");
var secret = Config.get("AWS.secretKey");
var credentials = new AWS.Credentials(key, secret, sessionToken = null);
this._sqs = new Promise.promisifyAll(new AWS.SQS({apiVersion: '2012-11-05', region: "us-west-2", endpoint: "sqs.us-west-2.amazonaws.com", credentials: credentials}));
}
QueueService.prototype.FillBirdQueue = function(birds) {
var self = this;
birds.forEach(function(bird_batch) {
var params = {
Entries: bird_batch,
QueueUrl: Config.get("AWS-Queue.Birds")
};
return self._sqs.sendMessageBatchAsync(params);
});
};
Run Code Online (Sandbox Code Playgroud)
如果我省略var self = this;并调用return this._sqs.sendMessageBatchAsync(params);我得到一个错误,因为_.sqs未定义.它似乎this已经改变了,唯一的方法是保存它以供以后使用var self = this;.
我觉得有更好的方法来解决这个问题,但我并不完全确定如何使用这些工具.我目前正在使用Bluebird和Lodash,两者都支持绑定.在过去,我通过this在Bluebird中执行以下操作:
somethingAsync().bind(this).then(function(result){});
Run Code Online (Sandbox Code Playgroud)
我无法使用这种模式,因为我最初没有做任何异步.我只调用一个promise并且需要能够访问我在构造函数中定义的变量来执行此操作.
我忽略了什么......它能做什么?
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |