我可以忽略javascript中的承诺吗?

时间:2014-04-24 19:07:31

标签: javascript promise

我为我的网络工作者设置了一个承诺/延期设置,其中主线程对Web工作人员的数据进行了更改并告诉我重新计算。我承诺在完成后再回电。

然而,在中间过程中,主线程可以进行额外的更改,同时承诺在完成时回调。 (可能会发生此中断,因为Web工作者有时会调用setTimeout来允许中断。)此时,Web工作者将向主线程保留2个promise,这两个promise将返回完全相同的值。

可以扔掉第一个承诺,只回拨第二个承诺。代码将全部运行良好,主线程逻辑将很好(事实上更好)只有一个回调。这样做有什么问题吗?

promise只是存储在我在哈希表中保存的对象中的函数。因此,如果我从哈希表中删除它,它的内存应该返回到堆中,因此不应该有任何泄漏。

那么我可以让我的回调系统成为骗子(在适当的时候)吗?

1 个答案:

答案 0 :(得分:3)

这是完全合法的。正如Ben在评论中指出的那样,在自动填充等情况下,它很常见。事实上,我写了一个明确设计的库来支持这种事情:

https://github.com/domenic/last

引用其自述文件:

var last = require("last");

var smartSearch = last(doSearch);

$(searchEl).on("input", function (ev) {
    smartSearch(searchEl.value).then(updateUIWithResults).done();
});
     

包装函数将返回与此类型相同的承诺   由原件返回。一旦你调用包装函数   再次,您将保证以前返回的待处理   承诺永远保持待命,所以你不必担心它们   回来晚于你的新承诺。

相关问题