解决多个承诺返回合并的数据

问题描述 投票:-2回答:1

我只是JavaScript Promises的初学者,尽管我一生中都在使用AJAX请求广泛使用它们。

我正在构建要从SharePoint库运行的前端应用程序,它从SharePoint API请求用户信息以自定义页面内容。要获取我想要的所有信息,我需要获取2个不同的URL,因为其中一个不包含我要查找的所有数据。

[此外,我正在构建一个库以促进SharePoint API的使用,希望这两个诺言能够在一个诺言中得到解决,并且两个诺言的结果都已经合并在一个JSON userData中。我知道Promise.all()做类似的事情,但是它的结果是一个带有单独结果的数组,这不符合我想要的第二部分...

此外,请记住,我正在构建与IE完全兼容的应用程序,因此许多资源如Asyn / Await被丢弃。

因此,我希望下面的函数getUser()已经返回带有合并对象属性的Promise:

function getUser() {
    var userData1 = axios.get(url + '/web/CurrentUser');
    var userData2 = axios.get(url + '/SP.UserProfiles.PeopleManager/GetMyProperties');

    return Promise.all([userData1, userData2]);
}

var userDataAll;
getUser().then(function(values) {
    userDataAll = Object.assign({}, values[0].data, values[1].data);
});
javascript internet-explorer ecmascript-6 promise ecmascript-5
1个回答
-1
投票

我不明白您的问题到底是什么,但是如果您想要类似所有用户数据的动态组合,那么您可以执行以下操作:

Object.assign({}, ...values.map(value => value.data));

这显然不考虑数据重复键,因此您将使用最新值重写重复键

© www.soinside.com 2019 - 2024. All rights reserved.