最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

返回NodeJS中未定义的异步函数

IT培训 admin 4浏览 0评论

返回NodeJS中未定义的异步函数

所以,我正在尝试了解异步功能的工作原理。使用Promises中的“解决,拒绝”功能可以正常工作。但是,由于某种原因,当我尝试通过异步而不是新的Promise应用它时,该函数返回未定义。这是我的代码:)

PS。对不起我的英语,说不流利的:)


category = body.category

   obtenerCategoria = async(category) => {

       Categoria.findOne({ descripcion: category })
           .exec((err, categoriaDB) => {
               if (err) {
                   throw new Error(err)
               }
               if (!categoriaDB) {
                   return res.status(400).json({
                       ok: false,
                       msg: 'Categoria no encontrada'
                   })
               }
               console.log(categoriaDB); // Works fine here
               return categoriaDB
           })
   }


   crearClase = async() => {

       categoria = await obtenerCategoria(category);
       console.log(categoria); //getting nothing here

   }

   crearClase()
       .then()
       .catch(e => {
           return e
       })```
回答如下:

[使用callback时不需要使用async/await功能

尝试此代码:

obtenerCategoria = async(category) => {
    const categoriaDB = await Categoria.findOne({ descripcion: category });
    if (!categoriaDB) {
        return res.status(400).json({
            ok: false,
            msg: 'Categoria no encontrada'
        })
    }
    console.log(categoriaDB); // Works fine here
    return categoriaDB
}

返回NodeJS中未定义的异步函数

所以,我正在尝试了解异步功能的工作原理。使用Promises中的“解决,拒绝”功能可以正常工作。但是,由于某种原因,当我尝试通过异步而不是新的Promise应用它时,该函数返回未定义。这是我的代码:)

PS。对不起我的英语,说不流利的:)


category = body.category

   obtenerCategoria = async(category) => {

       Categoria.findOne({ descripcion: category })
           .exec((err, categoriaDB) => {
               if (err) {
                   throw new Error(err)
               }
               if (!categoriaDB) {
                   return res.status(400).json({
                       ok: false,
                       msg: 'Categoria no encontrada'
                   })
               }
               console.log(categoriaDB); // Works fine here
               return categoriaDB
           })
   }


   crearClase = async() => {

       categoria = await obtenerCategoria(category);
       console.log(categoria); //getting nothing here

   }

   crearClase()
       .then()
       .catch(e => {
           return e
       })```
回答如下:

[使用callback时不需要使用async/await功能

尝试此代码:

obtenerCategoria = async(category) => {
    const categoriaDB = await Categoria.findOne({ descripcion: category });
    if (!categoriaDB) {
        return res.status(400).json({
            ok: false,
            msg: 'Categoria no encontrada'
        })
    }
    console.log(categoriaDB); // Works fine here
    return categoriaDB
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论