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);
}
我正在尝试将多个图像保存到文件api。 ids数组有多个图像作为blob。这里我的问题是,第一个警报,即“警报(”图像“+ i +”。png“);”被触发4次,然后第一次触发第二次警报。我怎样才能让它一个接一个地触发?
请帮忙, 感谢
答案 0 :(得分:0)
setTimeout不会停止执行并等待函数完成。它会立即返回。然后在定义的毫秒后调用传递给它的函数。
答案 1 :(得分:0)
for (var i in ids) {
alert("image" + i + ".png");
这会一个接一个地触发您的4个警报,因为它处于循环中并且不关心图像是否加载。
当fs.root.getFile结束并触发回调时,似乎会触发第二个警报。
您可以尝试以下
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", {