以下是我的代码示例:
<rich:panel header="Informations" style="margin: 20px 0 !important;">
<h:dataTable id="userLocationList"
value="#{userLocation.list()}" var="row"
styleClass="rich-table"
headerClass="rich-table-subheader rich-table-subheadercell rich-table-thead"
rowClasses="rich-table-row"
columnClasses="rich-table-cell,rich-table-cell,rich-table-cell">
<h:column>
<f:facet name="header">
<h:outputText value="Profile" />
</f:facet>
<center>
<h:outputText value="#{row.name}" />
</center>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Localizations" />
</f:facet>
<h:dataTable id="uLoc" var="c"
value="#{home.getLocByProfile(row.idProfile)}">
<h:column>
<h:outputText value="#{c}" />
</h:column>
</h:dataTable>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Status" />
</f:facet>
<center>
<h:outputText value="#{row.active ? 'OK' : 'Inactive'}" />
</center>
</h:column>
</h:dataTable>
</rich:panel>
如果我省略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);
});
};
并致电var self = this;
,我会收到错误,因为return this._sqs.sendMessageBatchAsync(params);
未定义。 _.sqs
似乎已发生变化,唯一的方法就是将其保存以供日后使用this
。
我觉得有更好的方法来解决这个问题,但我并不完全确定如何使用这些工具。我目前正在使用Bluebird和Lodash,两者都支持绑定。在过去,我通过在Bluebird中执行以下操作来通过var self = this;
:
this
我无法使用此模式,因为我最初没有做任何异步。我只调用一个promise并且需要能够访问我在构造函数中定义的变量来执行此操作。
我忽略了什么......它可能是什么?