Javascript 等待并异步切换函数的顺序
我的服务器节点有问题。我认为这与等待/异步有关 我想做的是制作一个系统,使用Socket从PDF(使用Puppeter)创建电子邮件(使用NodeEmailer),然后将它们发送到电子邮件地址 所以我必须在通过电子邮件发送之前创建PDF 这是我的代码:Javascript 等待并异步切换函数的顺序,javascript,node.js,async-await,socket.io,puppeteer,Javascript,Node.js,Async Await,Socket.io,Puppeteer,我的服务器节点有问题。我认为这与等待/异步有关 我想做的是制作一个系统,使用Socket从PDF(使用Puppeter)创建电子邮件(使用NodeEmailer),然后将它们发送到电子邮件地址 所以我必须在通过电子邮件发送之前创建PDF 这是我的代码: async function CreatePDF(){ // Fonction cree console.log('Trying to make the PDF'); try{ const b
async function CreatePDF(){ // Fonction cree
console.log('Trying to make the PDF');
try{
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent('<body><style>' + HeadHTML + '</style>'+ PageHTML + '</body>');
await page.emulateMedia('screen');
await page.pdf({
path: path.join(__dirname, 'Nouveau dossier', NumberOfTheFile + '.pdf'),
format: "A4",
printBackground: true
});
console.log('PDF Created!');
SendEmail(); //Doesn't use async or await
} catch (e)
{
console.log('Error: ', e)
}
}
function SendEmail(){
console.log('Trying to send the email');
//Put everything to send Email here.
}
异步函数CreatePDF(){//Fonction cree
log('尝试制作PDF');
试一试{
const browser=wait puppeter.launch();
const page=wait browser.newPage();
等待page.setContent(“”+HeadHTML+“”+PageHTML+“”);
等待页面。仿真媒体(“屏幕”);
等待页面.pdf({
path:path.join(uu dirname,'Nouveau docsier',NumberOfTheFile+'.pdf'),
格式:“A4”,
打印背景:正确
});
log('PDF已创建!');
SendEmail();//不使用异步或等待
}捕获(e)
{
console.log('错误:',e)
}
}
函数sendmail(){
log('尝试发送电子邮件');
//把所有要发送电子邮件的东西都放在这里。
}
问题是PDF是在系统尝试发送电子邮件后创建的。我不知道是否有一种方法可以让木偶演员在没有等待/异步的情况下工作,或者我是否可以确保事情朝着正确的方向发展
在控制台上,我得到:
正在尝试发送电子邮件
创建PDF
我认为这是不可能的。console.log调用甚至不在异步代码中。即使所有的木偶演员代码都异步运行,控制台日志也会正常运行。如果这是真实的代码,那么这些console.log就不可能按照您的要求发生。我可以向您保证,这是昨天发生的。而。。。说邮件无法发送。现在我只是在SendEmail()调用之前添加了一个wait,即使调用速度非常慢,它也能正常工作。我认为这不可能console.log调用甚至不在异步代码中。即使所有Puppeter代码都异步运行,控制台日志将是有序的。如果这是实际的真实代码,那么这些控制台日志不可能按照您要求的顺序发生。我可以向您保证,它发生在昨天。。。说邮件无法发送。现在,我只是在调用sendmail()之前添加了一个wait,它可以正常工作,即使速度非常慢。