Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 - Fatal编程技术网

Javascript 程序正在忽略异步模式

Javascript 程序正在忽略异步模式,javascript,node.js,Javascript,Node.js,有人能帮帮我吗 由于某种原因,程序忽略了异步模式 代码结果= [] 试验 我做错了什么 var linha = []; async function func(){ const { PdfReader } = require('pdfreader'); const reader = new PdfReader(); await reader.parseBuffer(req.file.buffer, (err, item) => { if (err)

有人能帮帮我吗

由于某种原因,程序忽略了异步模式

代码结果= [] 试验

我做错了什么

var linha = [];

async function func(){

  const { PdfReader } = require('pdfreader');

  const reader = new PdfReader();

  await reader.parseBuffer(req.file.buffer,  (err, item)  => {
      if (err)
        console.error(err);

      else if (!item)
        console.log('Done.');

      else if (item.text) {
        linha.push(item.text);
        console.log('test');
      }
  });
}

await func();
console.log(linha);

问题在于
reader.parseBuffer
不返回承诺。它触发您提供的回调。 从本质上讲,语法有点错误。您可以将
reader.parseBuffer
包装为“promisify”如下所示的方法:

var linha=[];
const{PdfReader}=require('PdfReader');
const reader=new PdfReader();
const promiseParseBuffer=buffer=>新承诺((解析、拒绝)=>{
reader.parseBuffer(buffer,(err,item)=>{
如果(错误)返回拒绝(错误);
解决(项目);
});
});
异步函数func(){
试一试{
const item=wait promiseParseBuffer(req.file.buffer);
控制台日志(项目);
}捕获(错误){
控制台错误(error);
}
}
等待函数();
console.log(linha);

您如何知道它忽略了异步?您得到了什么输出?您不能在异步函数之外使用wait。最后一行是这里的基本问题<代码>等待仅当您等待承诺时才执行有用的操作。由于
reader.parseBuffer()
没有返回承诺,因此您的函数根本没有连接到该操作的完成中。