For循环;如何等待下一个函数完成处理下一个对象? JavaScript的

时间:2017-03-27 09:35:13

标签: javascript for-loop

请有人帮助我; 我正在使用for循环,循环遍历数组中的每个项目(文档名称),每个项目调用一个上传相应文档的函数。

我的问题是,在文档上传完成之前,for循环已移至下一个项目。在处理下一个数组项之前,如何让for循环等到被调用函数完成?

非常感谢任何帮助。

我的代码;

  fileNameArray = [doc1.doc, doc2.doc, doc3.doc];
  fileArrayLength = fileNameArray.length;

  loop = 0;
  for (fa = 0; fa < fileArrayLength; fa++) {
    if (loop == fa) {
      multiupload()
    } else {
      console.log("not ready for " + fileNameArray[fa]);
    };
  };
};

function multiupload(fileName) {
  fileName = fileNameArray[fa];
  //code here uploads document
  loop++;
};

修改 我使用以下代码完成了这项工作;

function promiseFun() {
  let myPromise = new Promise((resolve, reject) => {
    multiUpload(fileNameArray[index]);

    function multiUpload() {
      //my upload code
      resolve("Success!");
    };
  });
  myPromise.then((successMessage) => {
    index++;
    if (index < fileArrayLength) {
      promiseFun();
    };
  });
};

1 个答案:

答案 0 :(得分:0)

您可以使用以下承诺尝试使用

index= 0;

multiUpload(){
var Promise = new Promise(function(resolve, reject) {
  multiuploadPromise(fileNameArray[index]);
}

Promise.then(function (data) {
  index++;
  if(index < fileArrayLength){
   multiUpload();
  }
}
}