Javascript 什么时候不使用承诺
在阅读了几十篇关于es6承诺有多伟大以及为什么我们应该实现它们的文章之后,我有一种感觉,我的所有(非平凡的)javascript函数都应该是承诺 事实上,我在使用它们编写代码时感觉很棒,因为我避免了厄运三角,似乎得到了清晰简洁的代码。(这确实让执行的推理变得简单多了) 我没能找到的是:你什么时候不使用承诺?我什么时候可以避免使用它们 更新:Javascript 什么时候不使用承诺,javascript,node.js,promise,es6-promise,Javascript,Node.js,Promise,Es6 Promise,在阅读了几十篇关于es6承诺有多伟大以及为什么我们应该实现它们的文章之后,我有一种感觉,我的所有(非平凡的)javascript函数都应该是承诺 事实上,我在使用它们编写代码时感觉很棒,因为我避免了厄运三角,似乎得到了清晰简洁的代码。(这确实让执行的推理变得简单多了) 我没能找到的是:你什么时候不使用承诺?我什么时候可以避免使用它们 更新: 虽然我已经看到了API一致性这样的一些优点,但我还没有找到一个可靠的“无”案例。Lux的回答表明,获取事件发射器的操作应该避免它们,因为重复的回调与承诺不兼
虽然我已经看到了API一致性这样的一些优点,但我还没有找到一个可靠的“无”案例。Lux的回答表明,获取事件发射器的操作应该避免它们,因为重复的回调与承诺不兼容。然而,我确实觉得现在的答案仍然缺乏实质性内容来检查它(是否正确)。Well Promissions有一个用例:异步结果只出现一次
如果可以同步返回结果,则不使用承诺,并且仍然需要对事件进行回调,因为事件可能会多次发生。如果希望代码在浏览器中运行(可能没有内置承诺),则可以决定不使用承诺,并且大小非常重要,因此,您负担不起使用Promise/libs。大多数情况下,Promise用于简化异步任务的处理。有时,我们故意异步执行一些操作,以避免工作线程过载,因为每个选项卡只有一个线程。当事情很小或可以由网络工作者处理时,不需要承诺。一些经验法则:
承诺
,而且在未来,似乎越来越多的浏览器内置将基于承诺运行。因此,如果您愿意编写现代代码,就不会逃避承诺您可以对一次性异步操作使用承诺。启动操作,执行操作,通知调用者操作完成或结果或错误,然后永久完成 不使用承诺的情况与上述情况不同:
当您使用RxJS时:只要我100%确定我的代码将同步执行,DI就会避免使用承诺。在任何其他情况下,承诺都会让你的生活变得更轻松。关于再次发生回调事件的观点非常重要!假设我想从另一个程序或库中获取结果?I/O是一项棘手的工作,因此为了安全起见,我会选择在这一点上一直遵守承诺。这是个坏习惯吗?我应该只在100%确定结果(或副作用)时才履行承诺吗