我使用以下代码正常工作!我的问题是,如果有更好的方法来写它或者它可以吗?我使用promise两次但是想验证我正确使用了这个promise吗
var start = function () {
return Promise.all([
chi.getCommand(val1,val2),
chi.findAndUpdateCustomer()
]).then(function (args) {
return Promise.all([chss.exe(runnableDoc, args[0], args[1]),
Promise.delay(10).then(function (val) {
val ? console.log(val) : null;
return app.getStatus(12)
})
])
})
}();
答案 0 :(得分:0)
思想:
.spread()
而不是.then()
按顺序使用Promise.all()
,这样可以更容易地使用正确的变量名称。Promise.all()
对我来说似乎是多余的。 所以我的建议是:
var start = Promise.all([
chi.getCommand(val1, val2),
chi.findAndUpdateCustomer()
]).spread(function (command, customer) {
return chss.exe(runnableDoc, command, customer).delay(10).then(function (val) {
if (val) console.log(val);
return app.getStatus(12);
});
});
注释
start
更好的名称,即......表示操作的结果,而不是您已开始操作的无关事实。val
中,将引用chss.exe()
调用的结果。但是,在您的设置中,val
始终为undefined
;我希望这不是意图。app.getStatus(12)
。但是如果出现错误,结果就不清楚了。为了对称起见,您应该添加一个.catch()
,以返回不同的应用状态。