我希望以非阻塞方式在服务器上接收到文件后立即并行处理该操作。
我已经尝试过了:
(async () => {
await io.setMaxListeners(0)
await io.on('connection', async (client) => {
await fse.copy(__dirname + /files/ + event.file.id, `${fileinfo}${meta.name}`);
console.log("File copied");
const thumbDirExists = await fse.pathExists(thumbDir);
thumbDirExists === false && await fse.ensureDir(thumbDir)
console.log("Thumb Dir created");
let readyFile = `${fileinfo}${meta.name}`;
let resizeFile = `${thumbDir}${meta.name}`;
await createThumb(readyFile, resizeFile).then(async imageBuffer => {
console.log("Resized!")
await client.emit('image', { image: true, buffer: imageBuffer.toString('base64') });
console.log("Image sent")
})
})
})();
预期结果:
File copied
Thumb Dir created
Resized
Image sent
File copied
Thumb Dir created
Resized
Image sent
File copied
Thumb Dir created
Resized
Image sent
实际结果:
File copied
File copied
File copied
Thumb Dir created
Thumb Dir created
Thumb Dir created
Resized
Image sent
Resized
Image sent
Resized
Image sent
似乎实际结果是先以阻止方式复制所有文件,然后以阻止方式创建thumb目录。
编辑:重复的答案无法解决我的问题。我的问题是关于并行/非阻塞方式的异步/等待操作。我不想使用任何类似promisfy的第三方库。