我只是 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);
});
答案 0 :(得分:0)
我明白了!我了解了promise的工作方式并自己找到了解决方案:我需要做的就是将步骤封装成一个新的promise,并在resolve()
被解决并且合并以{{1 }}:
Promise.all()