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()
没有返回承诺,因此您的函数根本没有连接到该操作的完成中。