我有一个关于 dojo/Deferred 的问题。我将从这个问题开始,然后详细介绍我在做什么:
不管延迟的结果如何,有没有办法执行相同的代码行,有点像语句finally
中的块?try...catch
从我读过的内容来看,似乎没有,但也许我对文档的理解有误,并想与 SO 社区进行验证。
这就是我正在做的事情:
在 Dojo 1.9(也适用于 1.8)中,我在加载一些数据之前为 ContentPane 实例化了 dojox.widget.Standby(加载覆盖)。延迟调用完成后,我想隐藏我的叠加层,如下所示:
standby = new Standby({
... // standby props
});
this.addChild(standby);
standby.show();
queryResults = grid.store.query({
... // query props
});
queryResults.then(function (results) {
if (results) {
... // do something
}
standby.hide();
}, function (error) {
... // handle error
standby.hide();
});
这很好用;但是,据推测,我可以在延迟完成后实现一些过程,该过程占用几行代码,而不仅仅是一行,我不想复制这些代码行。另一种方法是创建一个私有函数,并在每个块中使用一个单行来调用它,但如果有更好的方法,我宁愿走那条路。
提前致谢!