繁体   English   中英

从函数返回数组时出现Javascript名称间隔问题

[英]Trouble with Javascript namespacing in returning an Array from a function

我有一个对共享点的AJAX调用(如下所示)。

function GetProductIDSforActiveQuote() {
var arr = new Array();
$().SPServices({
    operation: "UpdateListItems",
    listName: "Quotes",
    ID:quoteID,
    completefunc: function (xData, Status) {
      $(xData.responseXML).SPFilterNode("z:row").each(function() {
        arr = $(this).attr("ows_Products").split(',');
      });
    }
  });
return arr;
}

我试图返回一个数组,但最后得到一个空数组。 我可以通过将控制台日志放在completefunc块中来验证是否正确返回了值。

AJAX调用是异步的。 这意味着当您点击return arr ,不一定已调用completeFunc

您可以修改代码,使其采用数组提供的回调函数吗? 像这样:

function GetProductIDSforActiveQuote(callback) {
    // other details omitted
    completefunc: function (xData, Status) {          
        arr = // your code
        callback(arr); // <- here's the difference.
      };        
}    

然后在回调函数中,可以根据需要处理数组。

看起来SPServices是异步的,因此它将在响应到达之前返回。 您必须从completefunc内部使用数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM