Javascript 如何使HTTP请求在异步函数上等待响应
我有下面的route函数,但对该函数的所有调用都在异步函数完成之前退出,因此它无法进行then()或catch()调用以适当地响应HTTP请求 在我的承诺完成之前,如何使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
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
代码。更好地理解你在该功能中所做的工作。这有什么帮助?