我想用 babel 运行这段代码:
redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();
在异步函数中没有await第一行。这个可以吗?
我还能怎样运行我不关心的事情呢?
我可以只触发非承诺函数 del('key',null) 而不进行回调吗?
是的,您可以这样做,它将并行运行两个异步函数。你刚刚创建了一个承诺,然后又把它扔掉了。
然而,这意味着当承诺被拒绝时你不会注意到。你只会get an unhandledRejection最终如果不处理的话,你的进程将会崩溃。
这个可以吗?我怎么能运行一些我不关心的事情呢?
大概是不太好吧。如果你真的不在乎,那么你一开始就没有运行它。因此,您应该清楚明确地了解您关心什么(以及不关心什么):
- 你想等吗? (针对副作用)
- 你需要结果吗?
- 你想捕获异常吗?
如果你只想等待而不关心结果值,你可以很容易地丢弃结果:
void (await someAsyncFunction()); // or omit the void keyword,
// doesn't make a difference in an expression statement
如果你不关心异常,你可以使用忽略它们
… someAsyncFunction().catch(function ignore() {}) …
你可以把它扔掉,等待它,用它做任何事情。
如果你想要结果,就必须等待。如果您关心异常,但又不想等待,您可能希望与以下函数并行执行:
var [_, res] = await Promise.all([
someAsyncFunction(), // result is ignored, exceptions aren't
someOtherAsyncFunction()
]);
return res;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)