SAPUI5中的异步函数

SAPUI5中的异步函数,sapui5,Sapui5,我正在使用一个函数在SAPUI5中打开一个对话框。打开此对话框时,应在浏览器的本地存储器中设置一些数据。但是,当我添加本地存储函数时,需要几秒钟才能打开对话框 有没有办法使本地存储异步?我尝试在对话框打开后放置本地存储的功能。但这并没有改变任何事情 /* WHEN THE USER CLICKS ON AN ASSIGNMENT IN THE CALENDAR */ onClickAssignment: function(oEvent) {

我正在使用一个函数在SAPUI5中打开一个对话框。打开此对话框时,应在浏览器的本地存储器中设置一些数据。但是,当我添加本地存储函数时,需要几秒钟才能打开对话框

有没有办法使本地存储异步?我尝试在对话框打开后放置本地存储的功能。但这并没有改变任何事情

        /* WHEN THE USER CLICKS ON AN ASSIGNMENT IN THE CALENDAR */
        onClickAssignment: function(oEvent) {
            var oAppointment = oEvent.getParameter("appointment");
            this.lastAppointment = oAppointment;

            if (oAppointment) {
                var key = this.byId("PC1").getViewKey();

                if (key === "Month") {
                    if (!this._oDetailsDialog || this._oDetailsDialog === null) {
                        // show assignment dialog
                        this._oDetailsDialog = sap.ui.xmlfragment(this.fragmentDetailsId, "be.xxxxxxxxxxx.fragment.viewAssignment", this);
                        this.getView().addDependent(this._oDetailsDialog);
                    }
                } else {
                    if (!this._oDetailsDialog || this._oDetailsDialog === null) {
                        // show subassignment dialog
                        this._oDetailsDialog = sap.ui.xmlfragment(this.fragmentDetailsId, "be.xxxxxxxxxxx.fragment.viewSubassignment", this);
                        this.getView().addDependent(this._oDetailsDialog);
                    }
                }


                this.oAppBC = oAppointment.getBindingContext();
                this._oDetailsDialog.setBindingContext(this.oAppBC);
                this._oDetailsDialog.open();
                this.lastClickedAssignment = oAppointment.getProperty("assignment");
                this.lastClickedSubassignment = oAppointment.getProperty("subassignment");

                //SET LOCAL STORAGE
                //  var stringifiedContext = CircularJSON.stringify(oAppointment.getBindingContext());
                //  var stringifiedAssignment = CircularJSON.stringify(oAppointment.getProperty("assignment"));
                //  var stringifiedSubassignment = CircularJSON.stringify(oAppointment.getProperty("subassignment"));

                //  this.setLocalStorage("context", stringifiedContext);
                //  this.setLocalStorage("assignment", stringifiedAssignment);
                //  this.setLocalStorage("subassignment", stringifiedSubassignment);
            }
        },

您可以将该部分代码的执行与主执行线程分离,方法是将其包装到
setTimeout

/*当用户单击日历中的工作分配时*/
onClickAssignment:函数(oEvent){
var oappoimment=oEvent.getParameter(“约会”);
这是最后一次约会;
如果(适用){
var key=this.byId(“PC1”).getViewKey();
如果(键==“月”){
如果(!this._oDetailsDialog | | this._oDetailsDialog==null){
//显示分配对话框
this._oDetailsDialog=sap.ui.xmlfragment(this.fragmentDetailsId,“be.xxxxxxxxxx.fragment.viewsignment”,this);
this.getView().addDependent(this.\u oDetailsDialog);
}
}否则{
如果(!this._oDetailsDialog | | this._oDetailsDialog==null){
//显示子分配对话框
this._oDetailsDialog=sap.ui.xmlfragment(this.fragmentDetailsId,“be.xxxxxxxxxx.fragment.viewSubassignment”,this);
this.getView().addDependent(this.\u oDetailsDialog);
}
}
this.oAppBC=oappoiment.getBindingContext();
this.\u oDetailsDialog.setBindingContext(this.oAppBC);
此._oDetailsDialog.open();
this.lastClickedAssignment=oappoint.getProperty(“分配”);
this.lastClickedSubassignment=oappoint.getProperty(“subassignment”);
setTimeout(函数(){
//设置本地存储
var stringifiedContext=CircularJSON.stringify(oappoint.getBindingContext());
var stringifiedAssignment=CircularJSON.stringify(oappoimment.getProperty(“assignment”);
var stringifiedSubassignment=CircularJSON.stringify(oappoint.getProperty(“subassign”);
setLocalStorage(“上下文”,stringifiedContext);
setLocalStorage(“赋值”,stringifiedAssignment);
setLocalStorage(“subassignment”,stringifiedSubassignment);
});
}
},
您也可以在打开后执行此操作:

this.\u oDetailsDialog.attachEventance('afterOpen',function(){
//设置本地存储
// ...
});