为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-02-19 15:58:18
写了一个类想先读取一个文件的数据,然后将数据存储到数据库中。saver.connectMongo()   .then(async () => {     const data = await saver.getFileContent(filename);     console.log(data);     saver.saveCodeToMongo1(data);   });这段代码运行的结果是 data 先输出了,也就是输出了 undefined,有没有大佬帮忙解读一下为什么会出现这种情况?
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-02-19
?
慕的地10843

TA贡献1785条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-02-19
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

简单把问题和答案有一个小 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


查看完整回答
反对 回复 2019-02-19
  • 3 回答
  • 0 关注
  • 3159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信