我正在尝试执行这些api调用。我只想在加载这两个函数后才调用另一个函数。我正在尝试对async和await做同样的事情,但是我的代码出了点问题,在同时加载两个api之前会调用console.log。
var app= {
getLinkedinData:function(url, callback){
var access_token = app.getParameterByName("access_token");
console.log(access_token)
if(access_token == "" || access_token == null) {
return false;
}
var form = new FormData();
var settings = {
"url": url,
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer "+ access_token
},
"processData": false,
"mimeType": "multipart/form-data",
"contentType": false,
"data": form
};
$.ajax(settings).done(callback);
},
getLinkedinEmail: function(){
var url = `https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))`;
return new Promise(function(resolve,reject){
app.getLinkedinData(url, function(response) {
var parsed = JSON.parse(response);
var emailId = parsed.elements[0][`handle~`].emailAddress;
app.linkedinObj.email = emailId;
// console.log(app.linkedinObj)
resolve(parsed);
})
})
},
getLinkedinProfile: function(){
var url = `https://api.linkedin.com/v2/me`;
return new Promise(function(resolve, reject){
app.getLinkedinData(url, function(response) {
var parsed = JSON.parse(response);
app.linkedinObj.firstName = parsed.localizedFirstName;
app.linkedinObj.lastName = parsed.localizedLastName;
app.linkedinObj.id = parsed.id;
app.linkedinObj.profilePicture = parsed.profilePicture.displayImage;
// console.log(app.linkedinObj)
resolve(parsed);
})
})
},
};
$(document).ready(function () {
async function wait() {
await Promise.all([
app.getLinkedinProfile(),
app.getLinkedinEmail()
]);
}
wait().then(console.log(app.linkedinObj));
});
请帮助我提供代码。
我将API调用更新为Promise之后,它开始起作用。我也更新了同样的问题。
async function wait() {
const result1 = Promise.all([app.getLinkedinProfile(), app.getLinkedinEmail()]);
console.log(result1)
}
wait();