非同步方法中對於$.Deferred()實際應用
本來很久之前就想寫這個來著,可是後來趕著開發,還有自己懶,就沒有寫。今天需要用到deferred的時候還跑來翻翻自己的博文,沒有找到還有點懵逼。所以今天用到了,而且達到了自己想要的效果了,想想還是記下來吧。
程式碼塊用到的easyui的$.messager.progress
關於deferred的定義,我還不是很清楚,可以自行百度,我都是百度的。關於本文的應用,就是想達到:迴圈中的非同步方法執行結束後,再呼叫我想呼叫的方法。
首先非同步方法如下:
function showPoint(mapPoint,warnTeller){ //關於$.Deferred() var d = $.Deferred(); var url = CTX_PATH + "lgyj/transferRiskCount"; $.post(url,warnTeller,function(data){ try{ // console.log(x,mapPoint); var latlng = new google.maps.LatLng(mapPoint.lat,mapPoint.lng); //點座標 var icon; //根據資料是否有異常設定圖示 if(data.total > 0){ icon = '<spring:url value="/resources/map/images/icons/red.png" />'; }else{ icon = '<spring:url value="/resources/map/images/icons/green.png" />'; } //新建marker點 var marker = new google.maps.Marker({ position: latlng, map: map, draggable:false,//禁止拖拽 title:mapPoint.org_name, icon:icon, org_id:mapPoint.org_id }); // console.log(marker); //站點資訊視窗 var currInfowindow = new google.maps.InfoWindow({ // content : getPointHtml(mapPoint.org_id), size : new google.maps.Size(210,90) }); //新增點事件 google.maps.event.addListener(marker, 'click', function(event) { var url = CTX_PATH + "lgyj/transferRiskQuery"; var warnTeller={}; warnTeller.org_id=this.org_id; //查詢資料並放在彈出視窗上 $.post(url,warnTeller,function(result){ var html = "<div style='width:350px;height:90px'>"; if(result.length > 0){ var num = 0; html = "<table border='1'><tr><th>姓名</th><th>櫃員號</th><th>應輪崗日期</th></tr>" for(var i =0 ; i<result.length; i++){ html += "<tr><td>"+result[i].name+"</td><td>"+result[i].tlr_id+"</td><td>" +result[i].deadline_date_str+"</td></tr>" } html +="</table>" }else{ html += "<strong>提示!</strong> 不存在未輪崗風險人員!" } html += "</div>"; clearAllInfoWindow(); currInfowindow.setContent(html); currInfowindow.open(map,marker); currInfowindow.setZIndex(1000); infowindows.push(currInfowindow); },'json'); }); }catch(e){ console.log(e); }finally{ d.resolve(); } },'json'); return d; }
當然上面的非同步方法裡面還套著一個非同步方法,我然而迴圈的非同步方法就是第一層的$.post方法。
然後新建一個deferreds陣列,然後把呼叫方法return的deferred塞進數組裡,最後在迴圈結束後,在所有非同步方法執行完成後呼叫我想呼叫的方法。如下面程式碼:
window.onload = function(){ // $.messager.alert("警告","申請通過的資料不可編輯") // $( "#progressbar" ).progressbar({ // value: false // }); //初始化map initialize('map_canvas',def_zoom,lat,lng); var mapPoints=${mapPointsJson}; if(mapPoints != null) { //進度條彈出 easyui $.messager.progress({ title:'營業點載入中,請等待', msg:'載入中...', }); //新建deferred陣列 var deferreds = []; for(x in mapPoints){ //人員數量 var warnTeller={}; warnTeller.org_id=mapPoints[x].org_id; var mapPoint=mapPoints[x]; //顯示marker var dp = showPoint(mapPoint,warnTeller); deferreds.push(dp); } //在所有非同步方法執行完後關閉進度條 $.when.apply($, deferreds).done(function(){ $.messager.progress("close"); }).fail(function(){ alert("wocaotainanleba"); }); //迴圈解除,關閉 // $.messager.progress("close"); } google.maps.event.addListener(map,'click',function(event){ //清理marker的浮窗 clearAllInfoWindow(); //限制地圖顯示的層級 if (map.getZoom() > 15){ map.setZoom(15); } if (map.getZoom() < 7){ map.setZoom(7); } }); }
相關推薦
非同步方法中對於$.Deferred()實際應用
本來很久之前就想寫這個來著,可是後來趕著開發,還有自己懶,就沒有寫。今天需要用到deferred的時候還跑來翻翻自己的博文,沒有找到還有點懵逼。所以今天用到了,而且達到了自己想要的效果了,想想還是記下來吧。 程式碼塊用到的easyui的$.messager.progress
非同步方法中取消非同步操作
1、在非同步方法中取消非同步操作,第一步必須宣告CancellationToken和CancellationTokenSource兩個類物件,並將兩個類通過 CancellationTokenSource 物件的token屬性關聯; CancellationTokenSource ct
js中cookie的實際應用
最近專案開發過程中遇到一個問題,需求是記錄各個許可權使用者最後登入時間,之前沒有細想只是一股腦的把當前時間,以及各種身份驗證資訊塞進方法驗證,然後把該方法放在登入按鈕旁邊,結果測試發現,實際出現情況是
bash實戰篇-數組在工作中的實際應用(測試環境發布腳本)
數組 腳本 shell 數組在之前已經用過介紹,下面介紹其在工作中的一個實際功用出現的工作背景: 公司測試環境的tomcat的webapps下有3個項目,如果按通常的發布腳本,需要為每一個項目單獨寫一個發布腳本,我感覺太過麻煩,就想能否用一個腳本搞定這3個項目,最開始是在腳本裏面定義三個變量
zookeeper 在項目中的實際應用
zookeeper curator ZooKeeper所提供的服務主要是通過:數據結構Node+原語+watcher機制ZooKeeper是一個分布式小文件系統,通過選舉算法和集群復制可以避免單點故障,由於是文件系統,所以即使所有的ZooKeeper節點全部掛掉,數據也不會丟失,重啟服務器之後,數據即
spark scala word2vec 和多層分類感知器在情感分析中的實際應用
predict output edi ext oop post format vector spa 轉自:http://www.cnblogs.com/canyangfeixue/p/7227998.html 對於威脅檢測算法使用神經網絡訓練有用!!!TODO待實驗 /
實際應用中遇到TimedRotatingFileHandler不滾動的問題
mat 文件的 lena mes asc over mage 執行 file 需求: 程序每天晚上8點和10點定時運行,期望日誌按日期記錄 添加Handler部分代碼如下: formatter = logging.Formatter("%(asctime)s %(
記 Python 在實際工作中的第一次應用
for split 今兒接到一個任務處理上線腳本,在明確了要求之後,尋思再三,為了以後能循環使用,這次得進行腳本化才好,於是就開始了我的拙劣碼風。 畫風其實是這樣的。 有一個文件裏面有些數據,需要遍歷出每行,然後分別取到每一行的第一列的值和第二列的值,然後打印出來,這樣循環不重復才能達到效果,於是我天
記錄一次線程池的在項目中的實際應用,講解一下線程池的配置和參數理解。
div pro 繼續 bstr warn fin autowire string ping 前言:最近項目中與融360項目中接口對接,有反饋接口(也就是我們接收到請求,需要立即響應,並且還要有一個接口推送給他們其他計算結果),推送過程耗時、或者說兩個接口不能是同時返回,有先
P2P中的 RFM模型如何實際應用
分享 alt 如何 mar 實際應用 每次 簡單的 ges 技術分享 https://www.zhihu.com/question/49439948/answer/130220645 RLMF的模型那我們再回到客戶關系裏來,做一個簡單的模型。圖表顯示了從客戶第一次購買到
在Mybatis中使用連表查詢的一次實際應用
多表關聯 del 應用 行記錄 全部 業務 val 一定的 att 以前在工作中很少使用多表關聯查詢,對連表查詢的具體作用和使用場景也沒有很直觀的認識,通過這次在項目中的實際應用,對此有了一定的認識,特記錄如下。 關聯表介紹: 分別是屬性表attr_info、屬性值表a
【數據庫】Mysql中主鍵的幾種表設計組合的實際應用效果
研究 開始時間 action 設計 int rand 業務主鍵 primary 同時 寫在前面 前前後後忙忙碌碌,度過了新工作的三個月。博客許久未新,似乎對忙碌沒有一點點防備。總結下來三個月不斷的磨礪自己,努力從獨樂樂轉變到眾樂樂,體會到不一樣的是,連辦公
sort()方法的排序規則與實際應用
var arr = [6,2,3,7,6,5,10] arr.sort() console.log(arr)//[10, 2, 3, 5, 6, 6, 7] //從控制檯看出,陣列會按照字元的Unicode進行排序,這並不是我們想要的結果 sort
promise和callback在微信小程式非同步呼叫中的應用
本部落格所有文章採用的授權方式為 自由轉載-非商用-非衍生-保持署名 ,轉載請務必註明出處,謝謝。 宣告: 本部落格歡迎轉發,但請註明出處,保留原作者資訊 部落格地址:孟阿龍的部落格 所有內容為本人學習、研究、總結。如有雷同,實屬榮幸 背景 近期,因為工作需要在研
Hibernate的延遲載入機制&&在實際應用中,延遲載入與Session關閉的矛盾是如何處理的?
Hibernate的延遲載入機制&&在實際應用中,延遲載入與Session關閉的矛盾是如何處理的? 延遲載入就是並不是在讀取的時候就把資料載入進來,而是等到使用時再載入。Hibernate使用了虛擬代理機制實現延遲載入,我們使用Session的load()方法載
Java 實際應用中常用的正則表示式
1.正則表示式 jdk1.4 開始提供了正則表示式的支援; java.util.regex Pattern類:此類物件如果想要獲得必須使用compile(), 此方法的功能式編譯正則 Matcher類:通過Patern類取得;2.正則標記 1.所有的正則可以使用的標記都在java.uti
資料結構中的樹結構有哪些實際應用?
資料結構中樹結構算是比較難,效能也相對比較好的結構了,一個平衡的樹結構,通常在查詢,修改和刪除處理上都有著極好的效率! 以連結串列為例,插入資料很簡單,就是將最後節點的next指向新節點,時間演算法為O(1)常數級,但是查詢的時候需要挨個遍歷比較,通常為O(N)級別! 而一顆平衡樹,查詢和插
C#中Get和Post請求的同步及非同步方法
在C#中發起Http請求一般使用HttpWebRequest這個類,下文將使用這個HttpWebRequest物件來對Get和Post的同步及非同步請求進行封裝: 新建HttpRequestHelper類: public static class H
openAI gym 實際應用中出現Attribute Error: module 'gym' has no attribute 'make'
安裝gym後我們可以看見目錄中有名為“gym”的資料夾,gym資料夾中還會有一個gym資料夾,如下圖所示 假如我們在這個目錄下python,測試import gym gym.__file__是可以成功的,但是出了這個目錄就會出現Attribute Error: module 'gym' has no a
JSP中EL表示式的應用以及常用的方法
EL表示式 1、EL簡介 1)語法結構 ${expression} 2)[]與.運算子 EL 提供.和[]兩種運算子來存取資料。 當要存取的屬性名稱中包含一些特殊字元,如.或?等並非字母或數字的符號,就一定要使用 []。