我只是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);
});
我不明白您的问题到底是什么,但是如果您想要类似所有用户数据的动态组合,那么您可以执行以下操作:
Object.assign({}, ...values.map(value => value.data));
这显然不考虑数据重复键,因此您将使用最新值重写重复键