JavaScript自訂回呼函數

來源:互聯網
上載者:User

JavaScript自訂回呼函數
背景分析

首先看一段js的代碼,主要實現添加的時候首先通過非同步請求判斷是否存在,如果不存在的話,在進行添加操作:

function add(url,data) {    var isExited = isExited(data);     if(!isExited){        addRequest(url, data);     }}

當我添加一個資料的時候,我首先通過判斷是否在資料庫中存在(當然,如果前後台徹底分離的話,不應該前端進行商務邏輯的判斷,前端只應該,用來展示資料),首先,isExited()的請求是ajax請求實現,這個是非同步,很顯然,介面很有可能在沒有返回結果的時候,就執行下邊的函數(通常情況下是的),就使得isExited的值是undefined,這顯然不是想要的,如果要實作類別似的功能可以使用用回呼函數實現,下邊介紹一個案例。

過程如下

前台jsp介面如下:

<%@ page language=java contentType=text/html; charset=UTF-8 pageEncoding=UTF-8 %><%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core %>
rel=stylesheet> <script type=text/javascript>/*** 刪除的請求*/function supplierDelete(element) {var id = element.parentNode.parentNode.cells[0].innerHTML;modalDeleteRequest('${pageContext.request.contextPath}/oms/supplier/remove/', id);}</script>  
JS回呼函數案例
 
123 123 123 123 123
123 123 123 123 123 修改  刪除
<%@include file=/modal-custom.jsp %> <script src=</script><script src=</script><script type=text/javascript src=</script>

主要的js代碼如下:

<script type=text/javascript>        /**         * 刪除的請求         */        function supplierDelete(element) {            var id = element.parentNode.parentNode.cells[0].innerHTML;            modalDeleteRequest('${pageContext.request.contextPath}/oms/supplier/remove/', id);        }    </script>

這裡就是當點擊按鈕的時候進行刪除,但是我想彈出一個確認刪除對話方塊,如果彈出之後選擇的是確認之後,才調用具體的刪除方法,還有這裡邊引用了一個modal框(bootstrap架構),主要是用於展示彈出框資訊,代碼如下:

<%@ page language=java pageEncoding=UTF-8 %><%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core %>
× 資訊   關閉

下邊是今天的主角:

/** * 刪除請求的操作 * @param url 刪除請求的url * @param id 刪除的id */function modalDeleteRequest(url, id) {    confirmIsDelete(url, id, deleteRequest);}/** * 在刪除警告框確認之後調用的回呼函數 * @param url * @param id */function deleteRequest(url, id) {    $.get(url + id, function (result) {        $(#modal-add-result-text).text(result.msg);        $(#modal-result).modal('show');    }, json);}/** * 彈出對話方塊確認是否刪除 * @param url 刪除請求的url * @param id 刪除請求的id * @param callback 回呼函數,在最後的時候需要進行回調的函數 */function confirmIsDelete(url, id, callback) {    var confirmDeleteDialog = $('
' + ' ×' + ' 確認刪除 ' + ' 確認要刪除嗎?刪除之後無法恢複哦! ' + '取消' + '刪除 ' + ' '); confirmDeleteDialog.modal({ keyboard: false }).on({ 'hidden.bs.modal': function () { $(this).remove(); } }); var deleteConfirm = confirmDeleteDialog.find('#deleteOK'); deleteConfirm.on('click', function () { confirmDeleteDialog.modal('hide'); //隱藏dialog //需要回調的函數 callback(deleteRequest(url, id)); }); }


上邊由於代碼比較多,下邊看一個簡單的架構:

/** * 回呼函數測試方法 *  * @param callback * 回調的方法 */function testCallback(callback) {    alert('come in!');    callback();}/** * 被回調的函數 */function a() {    alert('a');}/** * 開始測試方法 */function start() {    testCallback(a);}

到此回調結束,希望對大家有協助!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.