Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用函数(使用成功处理程序)后,循环停止执行_Javascript_Sharepoint - Fatal编程技术网

Javascript 调用函数(使用成功处理程序)后,循环停止执行

Javascript 调用函数(使用成功处理程序)后,循环停止执行,javascript,sharepoint,Javascript,Sharepoint,我在函数Function1的成功处理程序中运行的循环中调用函数Function2。在我调用函数Function2时循环的第一次迭代中,调用函数Function2并按照被调用函数Function2的成功处理程序中的指定执行操作。但是在这之后,控件不再转移到第一个函数Function1的成功处理程序中的循环,循环不再执行。下面的代码解释了该场景: function Function1() { clientContext = SP.ClientContext.get_current();

我在函数Function1的成功处理程序中运行的循环中调用函数Function2。在我调用函数Function2时循环的第一次迭代中,调用函数Function2并按照被调用函数Function2的成功处理程序中的指定执行操作。但是在这之后,控件不再转移到第一个函数Function1的成功处理程序中的循环,循环不再执行。下面的代码解释了该场景:

function Function1()
{
    clientContext = SP.ClientContext.get_current();
    website = clientContext.get_web();
    var oList = web.get_lists().getByTitle('Test');
    var camlQuery = new SP.CamlQuery();
    this.collListItem = oList.getItems(camlQuery);
    clientContext.load(this.collListItem, 'Include(ID, LinkFilename, Sender, Created,  DocIcon)');
    clientContext.executeQueryAsync(
    Function.createDelegate(this, successHandler),
    Function.createDelegate(this, errorHandler)
    );

    function successHandler() {
        var itemsCount = this.collListItem.get_count();
        for (i = 0; i < itemsCount; i++) {
            var item = this.collListItem.itemAt(i);
            alert(item.get_fieldValues()["Created"]);
            Function2();
        }
    alert('Loop ends');
    }
    function errorHandler() {
    }
} 
现在,功能2如下所示:

function Function2(){
    var context = SP.ClientContext.get_current();
    var web = context.get_web();
    var oList = web.get_lists().getByTitle('Test2');
    var camlQuery = new SP.CamlQuery();
    this.collListItem = oList.getItems(camlQuery);
    context.load(this.collListItem, 'Include(ID, BaseName, Created, ServerUrl)');
    context.executeQueryAsync(
    Function.createDelegate(this, success),
    Function.createDelegate(this, error)
    );
    function success() {
        var itemsCount = this.collListItem.get_count();
        for (i = 0; i < itemsCount; i++) {
            var item = this.collListItem.itemAt(i);
            alert(item.get_fieldValues()["ServerUrl"]);
        }
    }
    function error(){
    }
 }
现在我面临的问题是,代码仅在第一个函数中的循环的第一次迭代中运行,即使itemsCount大于1,但在警报显示循环结束时写入循环下面的代码甚至没有执行。 我看不出哪里出了问题,非常欢迎你的建议。请引导我完成此操作。

以下是一些提示:

使用Chrome和开发者控制台F12->Network选项卡查看请求的响应。 添加一些console.log语句,查看是否正在调用函数,但并不总是到达成功回调。例如: 确保在使用console.log时打开了开发人员工具,因为这些语句将导致IE中的错误,而开发人员工具关闭

function Function2() {
  console.log("Function2");
  var context = SP.ClientContext.get_current();
  var web = context.get_web();
  var oList = web.get_lists().getByTitle('Test2');
  var camlQuery = new SP.CamlQuery();
  this.collListItem = oList.getItems(camlQuery);
  context.load(this.collListItem, 'Include(ID, BaseName, Created, ServerUrl)');
  context.executeQueryAsync(
      Function.createDelegate(this, success),
      Function.createDelegate(this, error)
  );

  function success() {
      var itemsCount = this.collListItem.get_count();
      for (i = 0; i < itemsCount; i++) {
          var item = this.collListItem.itemAt(i);
          alert(item.get_fieldValues()["ServerUrl"]);
      }
  }

  function error(sender, args) {
      console.log("Request failed: " + args.get_message() + ". " + args.get_stackTrace());
  }
}