猿问

为啥这里的 async/await 不生效?

  1. 写了一个类想先读取一个文件的数据,然后将数据存储到数据库中。

  2. saver.connectMongo()
      .then(async () => {
        const data = await saver.getFileContent(filename);
        console.log(data);
        saver.saveCodeToMongo1(data);
      });

    这段代码运行的结果是 data 先输出了,也就是输出了 undefined,有没有大佬帮忙解读一下为什么会出现这种情况?


猛跑小猪
浏览 3160回答 3
3回答

慕桂英546537

await 后边的方法必须返回 promise,估计问题是你的saver.getFileContent这个方法返回值有问题

慕的地10843

saver.getFileContent 代码有问题,你排查下这个方法的返回值

白衣染霜花

简单把问题和答案有一个小 demo 说明一下:如果在 async 函数中没有返回 Promise 对象async function foo() {  let data;   setTimeout(() => {     data = 1;    console.log(data); // 1     return data;   }) } (async () => {  const data = await foo();  console.log(data); // undefined})();// 结果:// undefined// 1改成正确写法之后async function foo() {    let data;  return new Promise((resolve, reject) => {     setTimeout(() => {       data = 1;       resolve(data);     });   }); } (async () => {  const data = await foo();  console.log(data); })();// 结果:// 1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答