Monday, December 18, 2017

Closure trong js

                // chạy ajax tạo và lưu toàn bộ các bản ghi checkPage vào indexDB()
                if (navigator.onLine) {
                    for (var i = 0; i < this.pages.length; i++) {
                        (function (index, self) { // closure js
                            var ajaxoffline = document.createElement('iron-ajax');
                            ajaxoffline.contentType = "application/json";
                            ajaxoffline.handleAs = "json";
                            ajaxoffline.url = self.host + "/checks/" + self.idcheck + "/pages/" + self.pages[index].idpage;
                            ajaxoffline.method = 'POST';
                            ajaxoffline.headers = self._computeHeader();
                            ajaxoffline.generateRequest(); // offline
                            ajaxoffline.addEventListener('response', function (e) {
                                var obj = {};
                                obj.key = self.idcheck + self.pages[index].idpage;
                                obj.idCheck = self.idcheck;
                                obj.idPage = self.pages[index].idpage;
                                obj.checkpage = e.detail.__data.response;
                                // load trước ảnh
                                if (e.detail.__data.response.checkType == 2 && e.detail.__data.response.checkValue1) {
                                    new Image().src = e.detail.__data.response.checkValue1;
                                }
                                self.insertToCheckPageTable(obj);
                                self.checkpageofflineloadcount++;
                                if (self.checkpageofflineloadcount >= self.pages.length) {
                                    self.readyforoffline = 1;
                                }
                            });
                        })(i, this);
                    }

                    // check xem có bản ghi nào ghi nhận check bị stop trước đây không
                    var cookieCheck = this.getCookie("executing&" + this.idcheck);
                    if (cookieCheck) {
                        this.set("selectedpage", Number(cookieCheck));
                        this.deleteCookie("executing&" + this.idcheck);
                    }
                    else if (this.selectedpage < 0)
                        this.set("selectedpage", 0);
                }

No comments:

Post a Comment