Javascript Netlify功能未在控制台日志之前完成

Javascript Netlify功能未在控制台日志之前完成,javascript,asynchronous,aws-lambda,serverless,netlify,Javascript,Asynchronous,Aws Lambda,Serverless,Netlify,我一直在编写一个脚本,使用pdf2base64 npm包将上传的PDF从表单转换为Base64字符串,然后上传到api 我从上传的PDF中获取url,并将其传递到上面提到的包中,以便将其转换为正确的格式 我的代码如下所示: const pdf2base64=require('pdf-to-base64') const createPayload=(名称、电子邮件、pdf){ 返回{ 名字:名字, 电邮:电邮,, pdf:{ 名称:pdf.filename, mimeType:pdf.type,

我一直在编写一个脚本,使用pdf2base64 npm包将上传的PDF从表单转换为Base64字符串,然后上传到api

我从上传的PDF中获取url,并将其传递到上面提到的包中,以便将其转换为正确的格式

我的代码如下所示:


const pdf2base64=require('pdf-to-base64')
const createPayload=(名称、电子邮件、pdf){
返回{
名字:名字,
电邮:电邮,,
pdf:{
名称:pdf.filename,
mimeType:pdf.type,
fileContent:“”,//这将替换为base64字符串
}
}
}
exports.handler=异步函数(事件、上下文){
const formData=JSON.parse(event.body).payload
如果(formData.form_name==“pdf表单”){
log(“处理PDF…”)
const submission=createPayload(formData.data)
const pdfUrl=formData.data.resume.url
pdf2base64(pdfUrl)
。然后((响应)=>{
常量结果=响应;
submission.pdf.fileContent=结果;
console.log(提交)
返回响应
})
.catch((错误)=>console.log(错误))
}
}
但是,当我运行脚本时,我的控制台只记录以下内容

9:43:59 AM:2021-01-26T07:43:59.806Z 608332cc-be83-4243-b986-05d6e7e5b0f0信息处理PDF。。。
上午9:43:59:持续时间:71.86毫秒内存使用率:70 MB初始持续时间:132.10毫秒

如您所见,“处理PDF…”之后的任何日志都不会显示。我做错了什么?

您需要在异步函数的上下文中使用wait,以便等待pdf2base64()函数调用的结果。否则,主函数将比pdf2base64函数更快完成

exports.handler = async function( event, context ) {

  const formData = JSON.parse(event.body).payload

  if (formData.form_name == 'pdf-form') {

    console.log("Processing PDF...")
    const submission = createPayload(formData.data)
    const pdfUrl = formData.data.resume.url

    
    try {
      const result = await pdf2base64(pdfUrl);
      return result;
    } catch(error) {
      console.log(error);
    }
  }
}
有关异步/等待的更多信息,请访问:

作为经验法则。如果将函数标记为异步,只需使用wait而不是“then/catch”。使代码更易于阅读。如果有更复杂的流,就没有嵌套地狱。只是看起来是线性的代码