Javascript 如何使HTTP请求在异步函数上等待响应

Javascript 如何使HTTP请求在异步函数上等待响应,javascript,node.js,express,promise,Javascript,Node.js,Express,Promise,我有下面的route函数,但对该函数的所有调用都在异步函数完成之前退出,因此它无法进行then()或catch()调用以适当地响应HTTP请求 在我的承诺完成之前,如何使HTTP请求“保持/暂停” router.post('/', (req, res) => { // validate username and password validateCredentials(req) .then((msg) => { res.send(`Succe

我有下面的route函数,但对该函数的所有调用都在异步函数完成之前退出,因此它无法进行then()或catch()调用以适当地响应HTTP请求

在我的承诺完成之前,如何使HTTP请求“保持/暂停”

router.post('/', (req, res) => {

    // validate username and password
    validateCredentials(req)
    .then((msg) => {
        res.send(`Success!`);
    })
    .catch((err) => {
        res.status(500).send(err)
    })

})

假设您在节点中使用ES6,则可以使用
async/await
。这将允许您等待请求完成后继续

我使用了
fetch
作为示例

router.post('/', async (req, res) => {
  // validate username and password
  let response = await validateCredentials(req)
  if (response.code != 200) {
    return res.status(500).send(err)
  }
  res.send(response.result)
})

async function validateCredentials() {
  let response = await fetch('http://example.com')
  return { result: await response.json(), code: response.status }
}

这个代码很好。发出请求的代码可能有问题,或者
validateCredentials
实现可能有问题。请发那个密码。您是否获得了预期的
msg
?也添加
validateCredentials
代码。更好地理解你在该功能中所做的工作。这有什么帮助?