小编Dav*_*vid的帖子

解决或拒绝Dojo Deferred对象后如何执行公共代码?

我有一个关于dojo/Deferred的问题.我将从问题开始,然后详细了解我正在做的事情:

有没有办法执行相同的代码行,无论延迟的结果如何,有点像声明中的finallytry...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();
});
Run Code Online (Sandbox Code Playgroud)

这很好用; 但是,据推测,我可以在延迟完成之后实现一些进程,这些进程占用几行代码而不是一行,我不想复制那些代码行.另一种方法是创建一个私有函数,并在每个块中用一个单行调用它,但如果有更好的方法,我宁愿采取这种方式.

提前致谢!

javascript dojo promise deferred

5
推荐指数
1
解决办法
1541
查看次数

标签 统计

deferred ×1

dojo ×1

javascript ×1

promise ×1