簡體   English   中英

在.post function Node.JS中一個接一個地調用兩個異步函數

[英]calling two async functions one after another in .post function Node.JS

我想從客戶端接收圖像,將其轉換為文本,然后在轉換后刪除圖像。 我正在使用以下代碼:

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 方法中,我調用轉換 function 然后刪除,但首先執行刪除,因此轉換 function 導致錯誤。 有沒有辦法處理這個問題?

由於convertasync function,因此返回 promise,替換:

convert(img);
remove(img)

和:

convert(img).then(() => remove(img));

但是,這假定在convert返回承諾中所有等待的worker方法調用。 如果不是這種情況,並且它們運行異步代碼,那么實際上convert不會正確等待那些,你應該首先承諾它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM