这是启动apollo服务器的方式:
server.listen(port).then(({ url }) => {
console.log(`Server ready at ${url}`)
})
我想使用异步/等待Synthax。所以我尝试做-这是错误的:
server.listen(port, async ({ url }) => {
await anyFunction()
console.log(`Server ready at ${url}`)
})
最佳答案
async-await
的行为与.then()
链中的行为类似,await
等待诺言得到解决或拒绝,然后像.then()
在诺言解决上继续并在.catch()
在诺言拒绝上一样继续处理。await
返回与.then()
履行诺言解决的结果相同的结果,即:
foo().then( function(result){}); // got result here
result = await foo(); // will get same result here too as in above function.
类似地,
catch(err)
中的try-catch
与.catch( function(err) {})
中的.then()-.catch()
得到相同的错误。了解有关async-await here和here的更多信息。
要将您的.then()转换为async-await,只需执行以下操作:
(async function () {
try {
const { url } = await server.listen(port);
console.log(`Server ready at ${url}`);
} catch(e) {
// handle errors
}
})(); // This is [IIFE][3]. In this case it's better to have IIFE then regular function, as functions needed to be called.
异步等待功能:
async function startServer() {
try {
const { url } = await server.listen(port);
console.log(`Server ready at ${url}`);
} catch(e) {
// handle errors
}
}
startServer(); // Not an IIFE
关于javascript - 为server.listen()异步而不是then(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53294080/