Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待并异步切换函数的顺序_Javascript_Node.js_Async Await_Socket.io_Puppeteer - Fatal编程技术网

Javascript 等待并异步切换函数的顺序

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

我的服务器节点有问题。我认为这与等待/异步有关

我想做的是制作一个系统,使用Socket从PDF(使用Puppeter)创建电子邮件(使用NodeEmailer),然后将它们发送到电子邮件地址

所以我必须在通过电子邮件发送之前创建PDF

这是我的代码:

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,它可以正常工作,即使速度非常慢。