Javascript 嵌套异步函数的Null返回值

Javascript 嵌套异步函数的Null返回值,javascript,node.js,mongodb-query,Javascript,Node.js,Mongodb Query,这个函数如何返回null?是因为函数的可变范围还是执行时间 async function getBook() { var book; await libray.findONe({ cat: 1 }, {}, async (err, res) => { await section.findONe({ secId: res.secI }, {}, (error, result) => { book = result;

这个函数如何返回null?是因为函数的可变范围还是执行时间

async function getBook() {
      var book;
      await libray.findONe({ cat: 1 }, {}, async (err, res) => {
        await section.findONe({ secId: res.secI }, {}, (error, result) => {
          book = result;
        });
      });
    
      book = result;
    }


return book;
}
试试这个

async function getBook() {
      const res = await libray.findOne({ cat: 1 });
      const book = await section.findOne({ secId: res.secI });
      return book;
    }
试试这个

async function getBook() {
      const res = await libray.findOne({ cat: 1 });
      const book = await section.findOne({ secId: res.secI });
      return book;
    }

我认为问题在于,您是在异步函数完成之前从函数返回的。 所以解决这个问题的一个方便方法是从异步函数生成回调函数


很抱歉,我不是一个js人,所以我实际上无法发布代码,但我想你已经有了想法。

我认为问题在于,你是在异步函数完成之前从函数返回的。 所以解决这个问题的一个方便方法是从异步函数生成回调函数


很抱歉,我不是一个js人,所以我不能发布代码,但我想你已经有了想法。

在这里,混合回调和
wait
是永远不会成功的
await
仅在等待承诺时执行有用的操作,并且当您向数据库函数传递回调时,它们不会返回承诺。请花一秒钟时间了解
wait
真正做什么,以及如何使用它,以及如何在数据库中使用承诺。你不能在任何地方通过和
等待
,期望它做一些有用的事情。在这里,混合回调和
等待
是永远不会成功的
await
仅在等待承诺时执行有用的操作,并且当您向数据库函数传递回调时,它们不会返回承诺。请花一秒钟时间了解
wait
真正做什么,以及如何使用它,以及如何在数据库中使用承诺。你不能在任何地方等待它做一些有用的事情。这是正确的方法。这是正确的方法。