我正在尝试在另一个函数中调用异步函数。但是,当我单击网络选项卡时,它不会创建任何发布请求。这里有什么问题?
var onComplete = function() {
// CALLING THE ASYNC FUNCTION HERE ---> { NOT WORKING }
updateProfile()
}
async function updateProfile(){
var dataString = {
name: questions[0].answer,
gender: questions[1].answer,
dob: questions[2].answer,
country: questions[3].answer,
interested: questions[4].answer,
};
let xhr = new XMLHttpRequest();
xhr.open("POST", "processes/onboard.php", true);
xhr.onload = ()=> {
if(xhr.readyState === XMLHttpRequest.DONE) {
if(xhr.status === 200) {
// SUCCESS
}
}
}
let formData = new FormData(form);
xhr.send(JSON.stringify(dataString));
}
Run Code Online (Sandbox Code Playgroud)
小智 0
我不是超级专家,但我们可以应用一些建议
async/await块:IE
function resolveRequestAfter2Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
async function asyncCall() {
const result = await resolveRequestAfter2Seconds();
console.log(result);
}
asyncCall();
Run Code Online (Sandbox Code Playgroud)
promise.all获取一系列承诺,并在每次对交易详细信息的单独调用完成后返回一个包含交易的数组。IE
async (transactionKey, page) => {
const api = `https://api/....`;
const response = await axios.get(api);
// create an array of promises and wait for
// all of them to resolve before continuing
const transactions = await Promise.all(
response.data.map(async item => {
const { id, transaction_id } = item;
// get transaction details for each item in the array
const _details = await transactionDetails(transaction_id);
return {
id,
_details,
transactionId: transaction_id,
};
})
);
return transactions;
};
Run Code Online (Sandbox Code Playgroud)