Javascript 等待承诺-ES6
我试图捕获函数中两个服务调用的响应。知道async和Wait可以解决这个问题,并在下面进行了尝试。 在异步函数ex中,我正在向用户发出一个调用,公司的端点和控制台日志显示得非常完美,但在通过调用异步函数检索相同值的同时,却给出了待定的承诺。我尝试了两种选择 1.通过简单地调用异步函数-给予承诺挂起 2.通过使用带有wait前缀的调用,giving await是一个保留字 请让我知道如何从这个Javascript 等待承诺-ES6,javascript,es6-promise,Javascript,Es6 Promise,我试图捕获函数中两个服务调用的响应。知道async和Wait可以解决这个问题,并在下面进行了尝试。 在异步函数ex中,我正在向用户发出一个调用,公司的端点和控制台日志显示得非常完美,但在通过调用异步函数检索相同值的同时,却给出了待定的承诺。我尝试了两种选择 1.通过简单地调用异步函数-给予承诺挂起 2.通过使用带有wait前缀的调用,giving await是一个保留字 请让我知道如何从这个 const service = { getUsers: () => axios.get
const service = {
getUsers: () => axios.get(`http://localhost:3000/users`),
getCompanies: () => axios.get('http://localhost:3000/companies')
};
let ex = async () => {
let users = {};
let companies = {};
try {
users = await service.getUsers()
companies = await service.getCompanies()
console.log('Example ', {
users: users.data,
companies: companies.data
})
} catch (err) {
console.log(err);
}
return { users, companies};
};
//let resp = await ex(); - Giving await is a key word
let resp = ex(); - Giving Promise pending
console.log(resp);
async
/await
不会神奇地允许您同步执行异步操作。不管你用什么方法削减它,你仍然需要在某个时刻等待它的值
所以你有两个选择
。然后
承诺ex()
返回并使用返回的值:let ex = async () => {
let users = {};
let companies = {};
try {
users = await service.getUsers()
companies = await service.getCompanies()
// DO STUFF WITH users AND companies HERE
} catch (err) {
console.log(err);
}
}
ex().then(values => {
console.log(values);
});