我想知道在Express应用程序中,是否可以编写if
语句来有条件地执行代码而不提供else
语句。
if(pred) {
doSomething()
}
return foo;
calcBar(); // doesn't run.
上面是同步代码,在return
语句后停止执行。
我的Express函数如下:
app.get('/matches', async function(req, res) {
try {
const data = await someGraphQLCall();
if(data.length === 0) {
res.json({ message: "No data." });
}
const someOtherData = await someOtherGraphQLCall(data.foo);
res.json({ someOtherData });
} catch (err) {
res.json({err})
}
}
据这个问题所述,第一个res.json
之后的代码可能仍会被执行。有没有一种方法可以停止它?如果第一个if条件得到满足,我不想执行第二个GraphQL调用。是否有可能不使用else
来实现呢?
编辑:
如上述链接所提到的那样,使用return
语句是一个糟糕的选择,因为:
它也让其变得含义不明确和模糊,因为它使用了错误的语义。如果您没有使用函数的返回值,则不应该返回它。
if (data.hasSomeData) fetchFromGQL
这样的东西。 - Thomas Johansen