[英]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 導致錯誤。 有沒有辦法處理這個問題?
由於convert
是async
function,因此返回 promise,替換:
convert(img);
remove(img)
和:
convert(img).then(() => remove(img));
但是,這假定在convert
返回承諾中所有等待的worker
方法調用。 如果不是這種情況,並且它們運行異步代碼,那么實際上convert
不會正確等待那些,你應該首先承諾它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.