亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

基于jquery的easyUI異步調用問題

比如引用某个函数需要调用另外一个函数,则不能异步调用,需要改成同步方式,比如:

//函数一:加载combobox组件
function one(){
using('combogrid',function(){
$("#ad_type").combobox({
            onChange:function(record, oldValue){
                    $("#pro_id").combogrid('changeRequired',false);
                ........
    }
  });
 });
}
//函数二:加载另一个combobox组件
function two(){
    using('combogrid',function(){
        $('#pro_id').combogrid({
            panelHeight: 350,
            panelWidth: 450,
            required: false,
         ........
    });
  });
}

很明显函数一要用到函数二加载的组件,此时由于函数二存在回调函数,会导致异步加载,调用函数一的时候这行代码$("#pro_id").combogrid('changeRequired',false);会出错。
改进:重新定义函数二,增加一个形参func,将函数一的函数名作为参数传递给函数二,并且在函数二中的异步函数中调用函数一,初始化加载这两个combobox组件时,先调用函数二,完美解决。

function two(func){
    using('combogrid',function(){
        $('#pro_id').combogrid({
            panelHeight: 350,
            panelWidth: 450,
            required: false,
         ........
    });
    func();//内部调用
  });
}
//初始化函数
function init()
{
    two(one);
}

还有一种所谓的笨办法,但是治标不治本:就是延迟被依赖函数的调用方代码,目的是想使得被依赖的函数能够在被引用之前就加载完成以免报错,然而在某些情况下延迟并不起作用,因为本质还是异步加载不是同步加载,不建议采用这种方式。

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
70
獲贊與收藏
147

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消