我有一个带有嵌套 promise 数组的对象。
let promise = new Promise(resolve => setTimeout(resolve, 1000, 'url'));
let object = {
registration: [promise, promise, promise],
contract: [promise, promise, promise],
businessLicense: [promise, promise, promise],
businessPlan: [promise, promise, promise]
};
我需要一个使用 Promise.all
给出以下结果的函数
resolvePromisesFunction(object).then(result => console.log(result))
// the output should be
{
registration: [ 'url', 'url', 'url' ],
contract: [ 'url', 'url', 'url' ],
businessLicense: [ 'url', 'url', 'url' ],
businessPlan: [ 'url', 'url', 'url' ]
}
谢谢!
最佳答案
您可以使用chaining promises与 Promise.all 一起:
let promise = new Promise(resolve => setTimeout(resolve, 1000, 'url'));
var obj = {
registration: [promise, promise, promise],
contract: [promise, promise, promise],
businessLicense: [promise, promise, promise],
businessPlan: [promise, promise, promise]
};
function resolvePromisesFunction(obj) {
let resolvedObj = {};
return Promise.all(Object.keys(obj).map(service => {
return Promise.all(obj[service])
.then(result => resolvedObj[service] = result);
})).then(result => resolvedObj);
}
resolvePromisesFunction(obj).then(result => console.log(result));
关于javascript - 具有嵌套 Promise 数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244445/