函数在定义变量之前返回

空间

我有一系列简单的功能:

    convertXML();

    function convertXML(){

        var xmlObj = xmlToJson(xml.responseXML)
            .query.results.WMS_Capabilities;
        console.log("convertXML");

        (function checkReturn(){
            if(typeof xmlObj != 'undefined'){
            return (function(){ return createData(xmlObj)})();
            }
            else {
                setTimeout(checkReturn, 50);
            }
        })();
    }

    function createData(xmlObj){
        for (var i = 0; i < xmlObj.Capability.Layer.Layer.length; i++){
            var row={};
            row = xmlObj.Capability.Layer.Layer[i];
            WMSLayers.push(row);
        };
        console.log("createdata",WMSLayers)

        return (function(){return finish()})();
    }

    function finish(){
        console.log(n == Server.length-1)
        if (n == Server.length-1){
            //n is defined as an argument
            //this code is a part of a bigger function
            //same for Server variable
                createTable();

            };
    }

问题在于该convertXML函数有时会返回createData带有xmlObj变量的回调函数undefined因此,我必须检查是否已定义该变量以调用回调函数。

我的问题是函数是否应该在所有变量加载完数据后返回?

更新

这是我发出请求的方式:

var req = {
    "type"    :"GET",
    "dataType":"XML",
    "data"    : null,
    "url"     : url
};

//make the request (ajax.js)
ajax(req,ajaxSuccess,ajaxError);

function ajax(prop,onsuccess,onerror){
// data = data || null;
// var url = "wps"; // the script where you handle the form input.

$.ajax({
    type: prop.type,
    dataType: prop.dataType,
    data: prop.data,
    url: prop.url,
    success: function (data, textStatus, xhr) {
        console.log(xhr)
        onsuccess(xhr);
    },
    error:function (data ,textStatus, xhr) {
        onerror(xhr);
    }

});
// e.preventDefault();
}

function ajaxSuccess(xhr){
    $("#messages").append(
        '<span style="color:blue">' +
        getFullTime() + 
        '</span> Response HTTP status <b>' + 
        xhr.status + 
        ' [' + xhr.statusText + ']' +
        '</b> from:' +
        ' <a style="color:grey;text-decoration:none;" href="' +
        url+
        '" target="_blank">'+
        Server[i].link + 
        Request["getCapabilities"]+
        '</a><br>'
    );

    //create the wms
    createWMS(xhr, Server[i],i);//this is where the convertXML,createData and finish functions are located

        };
来宾271314

您可以使用的complete功能$.get()注意,n似乎未在finish函数定义。

function convertXML(xml, textStatus, jqxhr) {
  var xmlObj = xmlToJson(jqxhr.responseXML)
               .query.results.WMS_Capabilities;
  console.log("convertXML");

  if (typeof xmlObj != 'undefined') {
      createData(xmlObj);
  }
}

function createData(xmlObj){
  for (var i = 0; i < xmlObj.Capability.Layer.Layer.length; i++){
      var row = xmlObj.Capability.Layer.Layer[i];
      WMSLayers.push(row);
   };
   console.log("createdata",WMSLayers)
   finish();
}

$.get("/path/to/resource",  convertXML, "xml")
.fail(function(jqxhr, textStatus, errorThrown) {
  console.log(errorThrown)
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从函数返回之前定义的useRef变量?

来自分类Dev

如果-则函数返回变量未定义

来自分类Dev

jQuery函数返回变量“未定义”

来自分类常见问题

在返回函数变量之前,如何等待诺言完成?

来自分类Dev

ES6模块:是否必须在返回变量之前明确定义变量?

来自分类Dev

js将变量传递给返回未定义的函数

来自分类Dev

如何使函数外的返回变量不为未定义

来自分类Dev

用户定义的PHP函数无法返回更新的变量

来自分类Dev

js将变量传递给返回未定义的函数

来自分类Dev

Typescript类变量在Firebase函数中返回未定义

来自分类Dev

从函数返回指针而不将变量定义为静态?

来自分类Dev

Python - 使用决策语句和返回变量定义函数

来自分类Dev

Julia-可以在定义函数之前在函数中使用全局变量吗?

来自分类Dev

函数(在类中)中的变量仅可用于创建(并在此之前定义)的函数

来自分类Dev

在main之前定义变量

来自分类Dev

在处理 sqlconnection 之前从函数返回

来自分类Dev

C ++在变量之前声明函数

来自分类Dev

在定义之前使用javascript函数

来自分类Dev

在评估函数返回值之前或之后是否销毁了局部变量?

来自分类Dev

是否需要在def块之前定义函数中使用的全局变量?

来自分类Dev

函数不返回变量

来自分类Dev

从函数返回更新变量

来自分类Dev

函数返回表变量

来自分类Dev

从Javascript函数返回变量

来自分类Dev

从Javascript函数返回变量

来自分类Dev

从函数返回变量

来自分类Dev

函数不返回变量

来自分类Dev

从函数javascript返回变量

来自分类Dev

从函数返回变量