For循环等待:jquery

For循环等待:jquery,jquery,fileapi,Jquery,Fileapi,我正在尝试将多个图像保存到文件api。ids数组具有多个作为blob的图像。这里我的问题是,第一个警报即“警报”(“image”+i+“.png”);”被触发4次,然后只有第二个警报第一次被触发。我怎样才能让它一个接一个地被触发 请帮忙, 谢谢,setTimeout不会停止执行并等待函数完成。它立即返回。然后在定义的毫秒后调用传递给它的函数 for (var i in ids) { alert("image" + i + ".png"); setTimeout

我正在尝试将多个图像保存到文件api。ids数组具有多个作为blob的图像。这里我的问题是,第一个警报即“警报”(“image”+i+“.png”);”被触发4次,然后只有第二个警报第一次被触发。我怎样才能让它一个接一个地被触发

请帮忙,
谢谢,setTimeout不会停止执行并等待函数完成。它立即返回。然后在定义的毫秒后调用传递给它的函数

    for (var i in ids) {
       alert("image" + i + ".png");
       setTimeout(function () {
           (function () {
               fs.root.getFile("image" + i + ".png", {
                   create: true
               }, function (fileEntry) {
                   alert("fileimage" + i + ".png");
                   console.log(fileEntry);
                   fileEntry.createWriter(function (fileWriter) {

                       fileWriter.onwriteend = function (e) {
                           console.log("image successfully written to filesystem.");

                       };

                       var blob = new Blob([ids[i]]);
                       fileWriter.write(blob);
                   }, errorHandler);
               }, errorHandler);
           })(i)
       }, i * 1000);

   }
这会一个接一个地触发您的4个警报,因为它在循环中,不关心是否加载图像

第二个警报似乎在fs.root.getFile结束并触发回调时触发

你可以尝试以下方法

for (var i in ids) {
   alert("image" + i + ".png");
for (var i in ids) {
   setTimeout(function () {
       // alert("image" + i + ".png"); // here will be delayed also
       (function () {
           alert("image" + i + ".png");
           fs.root.getFile("image" + i + ".png", {