Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有嵌套承诺数组的对象_Javascript_Node.js_Asynchronous_Promise - Fatal编程技术网

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' ]
   }