我试图使用node.js中的Q模块来兑现承诺,但是我有一个小问题。
在此示例中:
ModelA.create(/* params */)
.then(function(modelA){
return ModelB.create(/* params */);
})
.then(function(modelB){
return ModelC.create(/* params */);
})
.then(function(modelC){
// need to do stuff with modelA, modelB and modelC
})
.fail(/*do failure stuff*/);
.create方法将在每个.then()中返回一个promise,如预期的那样,将获得promise的已解析值。
但是在最终的.then()中,我需要拥有所有3个先前解析的Promise值。
最好的方法是什么?
这些是您的许多选择中的一些:
在门1的后面,使用reduce来串行累加结果。
var models = [];
[
function () {
return ModelA.create(/*...*/);
},
function () {
return ModelB.create(/*...*/);
},
function () {
return ModelC.create(/*...*/);
}
].reduce(function (ready, makeModel) {
return ready.then(function () {
return makeModel().then(function (model) {
models.push(model);
});
});
}, Q())
.catch(function (error) {
// handle errors
});
在2号门的后面,将累积的模型打包成一个阵列,然后展开展开。
Q.try(function () {
return ModelA.create(/* params */)
})
.then(function(modelA){
return [modelA, ModelB.create(/* params */)];
})
.spread(function(modelA, modelB){
return [modelA, modelB, ModelC.create(/* params */)];
})
.spread(function(modelA, modelB, modelC){
// need to do stuff with modelA, modelB and modelC
})
.catch(/*do failure stuff*/);
在3号门后面,在父级范围中捕获结果:
var models [];
ModelA.create(/* params */)
.then(function(modelA){
models.push(modelA);
return ModelB.create(/* params */);
})
.then(function(modelB){
models.push(modelB);
return ModelC.create(/* params */);
})
.then(function(modelC){
models.push(modelC);
// need to do stuff with models
})
.catch(function (error) {
// handle error
});
问题内容: 目前,我在隐藏的输入字段中回显某些变量,并在需要时使用Javascript读取它们。 我和一个同事现在正在考虑使用PHP生成一个额外的Javascript文件,该文件仅包含Javascript的所有变量。这样,变量已经存在,HTML中没有多余的代码。 有什么好的方法可以将变量从PHP传递到Javascript?我们的解决方案听起来如何? 问题答案: 通用数据传递 JavaScript常
问题内容: 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django-openid-auth,似乎已经死了 django-authopenid django-socialauth(还提供对Twitter和Facebook帐户的身份验证) django-socialregistration(也具有Fa
我正在AmazonEC2上运行docker-container。目前我已将AWS凭据添加到DockerFile。你能告诉我这样做的最好方法吗?
问题内容: 在Java中,没有无符号字节之类的东西。 使用一些低级代码,有时您需要使用无符号值大于128的字节,由于MSB被用作符号,因此Java会将其解释为负数。 解决此问题的好方法是什么?(说不使用Java不是一种选择) 问题答案: 从数组读取任何单个值时,请将其复制到short或int之类的值中,然后将负数手动转换为正值。 写入数组时,可以执行类似的转换。
问题内容: 我在Amazon EC2上运行docker-container。目前,我已将AWS凭证添加到Dockerfile中。您能告诉我最好的方法吗? 问题答案: 最好的方法是使用IAM角色,并且根本不处理凭据。(请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam- roles-for-amazon- ec2.html ) 可以从中
问题内容: 我们希望将数据从服务器推送到客户端,但只能使用HTTP(端口80)。最佳的消息传递解决方案是什么?一种想法是彗星。是否还有其他想法或框架可以通过HTTP提供JMS。(是的,ActiveMQ也支持它,但是恕我直言。而且JXTA也支持它,但是配置很复杂。最好是简单的东西。) 问题答案: 由于许多原因,最简单的解决方案是使用基于Comet的方法(如您所述)。这意味着客户端(您要向其“推送”消