gpt4 book ai didi

Javascript - 异步函数完成后如何等待执行下一行?

转载 作者:行者123 更新时间:2023-12-03 11:16:20 24 4
gpt4 key购买 nike

我正在使用 Phonegap 插件中的 FileTransfer.download 函数来下载我的应用程序移动设备中的文件。

该函数是异步的,因此接下来的行的执行不依赖于该函数的结论。

我的应用程序在登录过程中从服务器捕获用户照片,因此此操作完成后用户无法移至主屏幕。但在我的实际代码中,这种情况不会发生,因为我不知道该怎么做。

下面你可以查看我的代码:

var usuarios = json.usuarios;

var fileTransfer = new FileTransfer();

for(var key in usuarios) {
if(usuarios.hasOwnProperty(key)){
if(usuarios[key].tipo == "titular"){

var titular = {
"id" : usuarios[key].id,
"email" : $("#login-email").val(),
"foto" : "images/perfil.jpg"
};

localStorage.setItem('appnowa-titular', JSON.stringify(titular));

if(usuarios[key].foto == "1"){

window.fileDownloadName = "appnowa-perfil-" + usuarios[key].id + ".jpg";

console.log('downloadFile');

window.requestFileSystem(
LocalFileSystem.PERSISTENT,
0,
function(fileSystem){
console.log('onRequestFileSystemSuccess');
fileSystem.root.getFile(
'dummy.html',
{create: true, exclusive: false},
function(fileEntry){
console.log('onGetFileSuccess!');
var path = fileEntry.toURL().replace('dummy.html', '');
var fileTransfer = new FileTransfer();
fileEntry.remove();

fileTransfer.download(
'https://www.myserver.com/imagens/clientes/' + window.fileDownloadName,
path + window.fileDownloadName,
function(file) {
console.log('download complete: ' + file.toURL());me;
titular.foto = file.toURL();
},
function(error) {
console.log('download error source ' + error.source);
console.log('download error target ' + error.target);
console.log('upload error code: ' + error.code);
titular.foto = "images/perfil.jpg";
}
);
},
fail
);
},
fail
);

console.log("1 " + titular.foto);
}
}
}
}

localStorage.setItem('appnowa-dependentes', JSON.stringify(dependentes));

appNowa.pushPage('mainPage.html'); //go to next page

最佳答案

我认为你可以通过两种方式实现它,

链式回调或在所有回调中进行状态测试;

我将编写我认为可能是可行解决方案的伪代码(未经测试,无法保证)

afterCharge=function(){
doYourStuffHere;
}

//method 1 in your callback
var complete=0
len = usuarios.lenght;
for(var key in usuarios){
//do yourstuff
fileTransfer.download(
file,
path,
function(file){
//do your stuff
complete++;
if(len===complete){
afterCharge();
}
},
function(error){
//do your stuff
complete++;
if(len===complete){
afterCharge();
}
}
);
}

关于Javascript - 异步函数完成后如何等待执行下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27327988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com