Javascript 如何使用o.js同时执行多个查询

Javascript 如何使用o.js同时执行多个查询,javascript,node.js,promise,odata,Javascript,Node.js,Promise,Odata,我正在使用npm的o.js库: 首先,我成功连接,这里没有问题: const oHandler = o(byDUrl, { headers: { 'Authorization': 'Basic ' + base64encodedData } }); 我的目标:同时执行多个查询,完成后处理结果: Promise.all([oHandler.get("CostCentreCollection").query({

我正在使用npm的o.js库:

首先,我成功连接,这里没有问题:

 const oHandler = o(byDUrl, {

        headers: {
            'Authorization': 'Basic ' + base64encodedData
        }
    });
我的目标:同时执行多个查询,完成后处理结果:

Promise.all([oHandler.get("CostCentreCollection").query({
            "$top" : parseInt(99999),
            "$format": 'json'
        }),
        oHandler.get("ServiceProductCollection").query({
            "$top" : parseInt(99999),
            "$format": 'json'
        }),
        oHandler.get("JobNameCollection").query({
            "$top" : parseInt(99999),
            "$format": 'json'
        }),
        oHandler.get("CompanyCurrentNameCollection").query({
            "$top" : parseInt(99999),
            "$format": 'json'
        }),
        ]).then(results => {
            console.timeEnd("Fetching Counts");
            console.log(results);
        }).catch(console.log);
    }
查询正常运行,但问题在“怪异”结果中:

我期待的结果是:

 [
    { d: [Object] },
    { d: [Object] },
    { d: [Object] },
    { d: [Object] }
  ] 
但是我的输出是这样的,我是做错了什么还是这是正常的行为?为什么我在数组中得到4倍相同的结果

[
  { d: { results: [Array] } },
  [
    { d: [Object] },
    { d: [Object] },
    { d: [Object] },
    { d: [Object] }
  ],
  [
    { d: [Object] },
    { d: [Object] },
    { d: [Object] },
    { d: [Object] }
  ],
  [
    { d: [Object] },
    { d: [Object] },
    { d: [Object] },
    { d: [Object] }
  ]
]
Promise.all()接收承诺数组,并解析为传递给它的每个承诺返回的值数组,其顺序与承诺相同

由于您的查询承诺每个查询返回一个数组,因此最终结果是一个数组数组

您可以使用
Array#flat()
或spread
[…结果]
来合并它们

基本示例:

constgetdata=(i)=>Promise.resolve(数组(3.fill)(i))
承诺所有([getData(1)、getData(2)、getData(3)])
。然后(res=>{
log('results:',JSON.stringify(res))
返回公寓()
}).然后(展平=>{
log('results flatted:',JSON.stringify(flatted))
})