js异步调用导致的代码不雅

先上一段代码:

       // add event to delete button
            on(deleteButton, 'click', lang.hitch(this, function() {
                // avoid duplicate click
                deleteButton.set('disabled', true);

                // show message box
                MessageBox.confirm('Are you sure to delete?', lang.hitch(this, function(userChoice) {
                    if (userChoice) {
                        // delete
                        // call service to delete
                        var putResult = new ModalityService().remove(_this.modalityInfo.device.id);
                        putResult.then(function(data) {

                            if (data.code == 0) {
                                router.goId('modality_list');
                            } else if (data.code == 200) {
                                // TODO enable delete button
                            }

                        });
                    } else {
                        // TODO enable delete button.
                    }
                }));

            }));

场景:删除之前disable删除按钮,操作成功返回列表,失败,按钮重新enable。

让事情变复杂的是:Javascript的异步调用,不能只在最后enable一下删除按钮。

所有,有没有更优雅的方式来解决这个问题。

好像还真没有,顶多封装封装函数,但是本质没变。

 

posted @ 2017-12-04 09:31  jpgtama  阅读(122)  评论(0编辑  收藏  举报