尝试异步地读取一个MP4文件,并且将其加载到Buffer中---以及一些代码中的疑问

尝试异步地读取一个MP4文件,并且将其加载到Buffer中。

const fs = require('fs');
fs.readFile('video.mp4', function (err,data) { 
  if(err){
    console.log(err)
  }else{
    console.log(data.length)
  }
 })

也可以这么写:

看好了,这里是await fs.promises.readFile(filePath);

既要await,又要promise

await后面一定要接一个promise对象:

使用 await 关键字必须在一个返回 Promise 对象的函数中使用。

fs.readFile本身不就是一个异步函数吗?返回的就是一个promise对象啊,为什么中间还要加一个promise?
因为,如果没有写回调函数,返回的就不是promise对象,这里参数只有filePath,没有回调函数,所以返回的不是promise,需要在前面加一个promise把它变成promise对象,这样才能被await接收

const fs = require('fs');

async function readMP4File(filePath) {
  try {
    const buffer = await fs.promises.readFile(filePath);
    console.log(`File ${filePath} loaded into buffer with size ${buffer.length} bytes`);
    return buffer;
  } catch (error) {
    console.error(`Error loading file ${filePath}: ${error}`);
  }
}

readMP4File('video.mp4');

当然还有不使用promise与await的写法,那就是使用回调函数:

const fs = require('fs');

fs.readFile('video.mp4', function (err,data) { 
  if(err){
    console.log(err)
  }else{
    console.log(`长度为${data.length}`)
  }
 })

你可能感兴趣的:(前端,javascript,vue.js)