异步/等待操作并行

时间:2019-04-22 07:43:42

标签: javascript node.js async-await

我希望以非阻塞方式在服务器上接收到文件后立即并行处理该操作。

我已经尝试过了:

(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的第三方库。

0 个答案:

没有答案