异步调用回调函数怎么写

时间:2022-08-27 15:40:33
 var list = [];
    function initialize() {
        $.ajax({
            async: false,
            type: "get",
            url: "Api/GetUserBind.ashx",
            dataType: "json",
            async: true,
            timeout: 60000,
            contentType: "application/json; charset=utf-8"
        }).done(function (data, textStatus, xhr) {
            if (data.result == 0) {
                for (var i = 0; i < data.data.length ; i++) {
                    var model = data.data[i];
                    list.push(model["CST_CSTM"])
                }
                alert(list);
                return list;
                }
                else {
                    alert(data.msg);
                }
            }).fail(function (xhr, textStatus, err) {
                alert(err.toString());
            });

2 个解决方案

#1


initialize(function (list) {
alert(list);
});
哪里不对了

#2


你指定为同步的了,调用函数后可以直接使用list。

一定要异步,需要修改函数传入回调,ajax执行完毕后执行回调传递数据

  
  var list = [];
    function initialize(callback) {
        $.ajax({
            //async: false,
            type: "get",
            url: "Api/GetUserBind.ashx",
            dataType: "json",
            async: true,
            timeout: 60000,
            contentType: "application/json; charset=utf-8"
        }).done(function (data, textStatus, xhr) {
            if (data.result == 0) {
                for (var i = 0; i < data.data.length ; i++) {
                    var model = data.data[i];
                    list.push(model["CST_CSTM"])
                }
              //  alert(list);
                callback(list);///////////////////
                //return list;
            }
            else {
                alert(data.msg);
            }
        }).fail(function (xhr, textStatus, err) {
            alert(err.toString());
        });
    }
    initialize(function (data) {
        alert('ajax执行完毕,数据:' + data)
        //....其他
    })

#1


initialize(function (list) {
alert(list);
});
哪里不对了

#2


你指定为同步的了,调用函数后可以直接使用list。

一定要异步,需要修改函数传入回调,ajax执行完毕后执行回调传递数据

  
  var list = [];
    function initialize(callback) {
        $.ajax({
            //async: false,
            type: "get",
            url: "Api/GetUserBind.ashx",
            dataType: "json",
            async: true,
            timeout: 60000,
            contentType: "application/json; charset=utf-8"
        }).done(function (data, textStatus, xhr) {
            if (data.result == 0) {
                for (var i = 0; i < data.data.length ; i++) {
                    var model = data.data[i];
                    list.push(model["CST_CSTM"])
                }
              //  alert(list);
                callback(list);///////////////////
                //return list;
            }
            else {
                alert(data.msg);
            }
        }).fail(function (xhr, textStatus, err) {
            alert(err.toString());
        });
    }
    initialize(function (data) {
        alert('ajax执行完毕,数据:' + data)
        //....其他
    })