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));