Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 在.post function Node.JS中依次调用两个异步函数_Javascript_Node.js_Asynchronous_Async Await - Fatal编程技术网

Javascript 在.post function Node.JS中依次调用两个异步函数

Javascript 在.post function Node.JS中依次调用两个异步函数,javascript,node.js,asynchronous,async-await,Javascript,Node.js,Asynchronous,Async Await,我想从客户端接收图像,将其转换为文本,然后在转换后删除图像。我正在使用以下代码: app.post('/upload', (req,res)=>{ const myFile = req.files.file; myFile.mv(`D:/web_projects/react-express-mongodb-template/server/pictures/${myFile.name}`) let img = `D:/web_projects/react-e

我想从客户端接收图像,将其转换为文本,然后在转换后删除图像。我正在使用以下代码:

app.post('/upload', (req,res)=>{
    const myFile = req.files.file;
    myFile.mv(`D:/web_projects/react-express-mongodb-template/server/pictures/${myFile.name}`)
    
    let img = `D:/web_projects/react-express-mongodb-template/server/pictures/${myFile.name}`
    convert(img);
    remove(img)
    
})
app.listen(5000, () => {
    console.log('server is running at port 5000');
})
async function convert(img){
  const worker = createWorker();
    
  console.log(worker)
  await worker.load();
  await worker.loadLanguage('eng');
  await worker.initialize('eng');
  const { data: { text } } = await worker.recognize(img);
  console.log(text);
  await worker.terminate();
    
}
async function remove(path){
  try {
    fs.unlink(path)
  } catch(err) {
    console.error(err)
  }
}

所以在post方法中,我调用convert函数,然后remove,但是remove首先执行,所以convert函数会导致错误。是否有办法处理此问题?

因为
转换
是一个
异步
函数,因此返回一个承诺,替换:

convert(img);
remove(img)
与:


但是,这假设
convert
中所有等待的
worker
方法调用都返回承诺。如果不是这样,并且它们运行异步代码,那么实际上,
convert
将不会正确地等待它们,您应该首先提示它们。

什么是
createWorker
?需要将图像转换为文本是的,但它的定义是什么?你确定那些
worker
方法会返回承诺吗?Tbh我不知道定义,但我确定它会返回承诺,因为我在tesseract.js的官方github页面上找到了这段代码。谢谢。这正是我们想要的。
convert(img).then(() => remove(img));