下次到来之前如何拒绝先前的承诺并且以前没有解决?

时间:2018-03-09 21:29:23

标签: javascript promise es6-promise cancellation

任务是:我有输入实现自动完成功能。我有函数getItems来处理输入更改并返回一个Promise,它返回一个满足过滤条件的任意对象数组。函数getItems也可以使用方法abort()返回一个对象,当前一个Promise尚未解析时,该方法应该在之前的Promise上调用。例如:

  • 我们输入g ...(getItems('g')函数被调用...)
  • 我们按ge ...(如果先前的Promise getItems('g')尚未解决 - 我们调用之前的“promise”abort)。 我不知道如何实现这一点。请帮帮我!

1 个答案:

答案 0 :(得分:0)

开箱即用,一旦创建了承诺,就无法取消承诺(据我所知)。一旦创建,将产生结果的过程已启动且无法停止,除非您已计划好。

一个快速的Google,会带你到关于如何解决这个限制的大量帖子,我个人喜欢这个:How to cancel your promise

除此之外,您可能还有兴趣使用debouncing or throttling减少创建承诺的次数。这些是在短时间内对事件进行分组(在您的情况下为输入事件)的方法,以创建更少的事件。