我有两个异步调用,我希望(种类)将来自调用1的响应与来自对象中的调用2的响应合并。
以下代码执行此操作。我的问题:有没有办法让Promise.all
的回调参数更具可读性?在这种情况下,我真的不想使用数组。
function getOptions() {
let programRequest = someAsynFunc(...);
let overviewTypeRequest = someOtherAsynFunc(...);
return Promise.all([programRequest, overviewTypeRequest]).then(values => {
return {
programs: values[0],
overviewTypes: values[1]
}
});
}
答案 0 :(得分:2)
看一下数组解构。你可以这样做:
return Promise.all([programRequest, overviewTypeRequest])
.then(([programs, overviewTypes]) => {
return {
programs,
overviewTypes,
}
});
由于变量与对象属性的名称相同,因此您还可以利用对象简写表示法。
供参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
答案 1 :(得分:1)
是:借助ES6解构:
Promise.all([...]).then(([programs, overviewTypes] => ({programs, overviewTypes}));
// ^ destructuring ^ short object literal syntax