Javascript 在不同的时间启动功能
我希望redirectWindow函数中的代码在得到confirmationOrder()函数的响应后启动。我试着这样做,但不起作用。 如果你能帮助我,谢谢你:) 我的确认订单功能:Javascript 在不同的时间启动功能,javascript,Javascript,我希望redirectWindow函数中的代码在得到confirmationOrder()函数的响应后启动。我试着这样做,但不起作用。 如果你能帮助我,谢谢你:) 我的确认订单功能: function confirmationOrder() { let buttonValidation = document.getElementById('btn-validation'); console.log(buttonValidation); buttonValidation.a
function confirmationOrder() {
let buttonValidation = document.getElementById('btn-validation');
console.log(buttonValidation);
buttonValidation.addEventListener('click', function () {
getForm();
dataToSend = JSON.stringify({ contact, products });
console.log(dataToSend);
postForm(dataToSend);
})
}
您正在等待一个不返回承诺的函数。我想你想要的是等待用户点击
function confirmationOrder() {
return new Promise(done=>{
let buttonValidation = document.getElementById('btn-validation');
console.log(buttonValidation);
buttonValidation.addEventListener('click', function () {
getForm();
dataToSend = JSON.stringify({ contact, products });
console.log(dataToSend);
postForm(dataToSend);
done();
})
});
}
但是,您可能还需要等待
postForm()
,这意味着您需要确保它也返回了一个承诺。阅读如何工作。代码中没有承诺,因此不清楚如何使用wait。。。。为什么confirmationOrder不只是在单击时调用重定向代码?wait
并不是一个神奇的包罗万象,它告诉解释器等待,直到目标函数中的每一行代码都被触发。它只能用于一种类型的价值:承诺。您的confirmationOrder()
函数不会返回任何值,更不用说承诺了。谢谢您的回答!我找到了一种方法,它正在工作(使用wait和async是一种在多次尝试之后的绝望尝试)
function confirmationOrder() {
return new Promise(done=>{
let buttonValidation = document.getElementById('btn-validation');
console.log(buttonValidation);
buttonValidation.addEventListener('click', function () {
getForm();
dataToSend = JSON.stringify({ contact, products });
console.log(dataToSend);
postForm(dataToSend);
done();
})
});
}