Javascript 具有嵌套承诺数组的对象
我有一个带有嵌套承诺数组的对象Javascript 具有嵌套承诺数组的对象,javascript,node.js,asynchronous,promise,Javascript,Node.js,Asynchronous,Promise,我有一个带有嵌套承诺数组的对象 let promise = new Promise(resolve => setTimeout(resolve, 1000, 'url')); let object = { registration: [promise, promise, promise], contract: [promise, promise, promise], businessLicense: [promise, promise, promise], bus
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给出以下结果
谢谢 试着重复你已知的承诺,承诺。所有这些承诺,然后承诺。所有这些结果 让promise=newpromisersolve=>setTimeoutresolve,1000,“url”; 让对象={ 注册:[承诺,承诺,承诺], 合同:[承诺,承诺,承诺], 营业执照:[承诺,承诺,承诺], 商业计划书:[承诺,承诺,承诺] }; 常量承诺=[]; Object.keysobject.forEachkey=>{ promises.pushPromise.allobject[key]; }; Promise.allpromises.thenresult=>{ const returnedObject={}; result.forEachvalue,索引=>{ returnedObject[Object.KeyObject[index]=value; }; console.logreturnedObject; }; 您可以与Promise一起使用。全部: 让promise=newpromisersolve=>setTimeoutresolve,1000,“url”; var obj={ 注册:[承诺,承诺,承诺], 合同:[承诺,承诺,承诺], 营业执照:[承诺,承诺,承诺], 商业计划书:[承诺,承诺,承诺] }; 功能解析承诺功能对象{ 设resolvedObj={}; return Promise.allObject.keysobj.mapservice=>{ 返回承诺。allobj[服务] .thenresult=>resolvedObj[service]=结果; }.thenresult=>resolvedObj; }
resolvePromisesFunctionobj.thenresult=>console.logresult 下面是一个解析深层嵌套对象递归的方法。寻找你的目标或阵列有多深的所有承诺 //解析数组 const promiseMap=承诺列表,函子=> Promise.allpromiseList.mappromiseOrValue=> Promise.ResolvePromiseValue.thenfunctor //解析对象 const promiseProps=obj=> Promise.allObject.keysobj.mapkey=> Promise.resolveobj[key].thenval=>{ obj[key]=val; } .then=>obj //解析重现的深部对象 const resolvednestedpromissions=obj=> Promise.resolveobj.thenobj=>{ if Array.isArrayobj{ 返回promiseMapobj,obj=>resolveNestedPromisesobj; } 否则,如果obj&&typeof obj=='object'&&obj.constructor===object{ 常量obj2={}; obj中的forconst键{ obj2[key]=ResolvestedPromisesObj[key]; } 返还承诺人; } 返回obj; } 让promise=newpromisersolve=>setTimeoutresolve,1000,“url”; 让对象={ 注册:[承诺,承诺,承诺], 合同:[承诺,承诺,承诺], 营业执照:[承诺,承诺,承诺], 商业计划书:[承诺,承诺,承诺] }; promisePropsobject.thenconsole.log//或
ResolvedNestedPromisesObject.thenconsole.Log提供了一个更真实的用例。不太清楚你在找什么React/Node应用程序,直接将文件上传到S3。浏览器将直接将文件上传到S3,并将带有已解析承诺/URL的对象发送到节点后端。关于所示数组的构造方式,这一点仍然不明确。虽然可能有一种更干净的方法,但这种奇怪的输出是什么/**参考:3**/
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' ]
}