代码之家  ›  专栏  ›  技术社区  ›  cogitoergosum

nodejs-带await的函数作用域

  •  0
  • cogitoergosum  · 技术社区  · 7 年前

    这是我文件的布局:

    router.post('/data/*', async function (req, res, next) {
      var status1 = 0, status2 = 0, status3 = 0;
      await function1(req, (err,res) => {
        if (err) {
            status1 = 400
        } else {
            status1 = 200
        }
      })
      await function2(req, (err,res) => {
        if (err) {
            status2 = 400
        } else {
            status2 = 200
        }
      })
      await function3(req, (err,res) => {
        if (err) {
            status3 = 400
        } else {
            status3 = 200
        }
      })
      //
      // Here, all status variables are zero - why?
      //
      if (status1 > 200 || status2 > 200 || status3 > 200) {
        res.status(400)
        res.send({'resp':'Error'})
      } else {
        res.status(200)
        res.send({'resp':'Success'})
      }
    
    }
    

    我调用了三个函数 await 处理 POST 有效载荷。每个功能可能成功完成,也可能不成功完成。现在,我使用的选项是,如果任何函数是错误的,那么我将状态视为 400 并相应地发送响应。如果不是,那么我认为 200 并作为成功发送响应。

    我的问题是,当我检查状态代码时,它从不携带函数中设置的值。不是 等待 希望使函数按顺序执行?

    0 回复  |  直到 7 年前
    推荐文章