3 함수 a(), b() 및 c()가 다음과 같이 루프에서 x 번 실행되도록 함수를 호출합니다. 함수 a(); a()가 완료된 후에 함수 b()를 호출하기 전에 s1 초 기다려야합니다. s1 초가 경과 한 후에 함수 b()를 호출해야합니다. b()가 완료된 후 루프를 다시 시작하기 전에 s2 초 기다려야합니다.setTimeout은 3 개의 함수가 루프 된 후 실행됩니다.
for(var i=0; i<x; i++) {
a();
setTimeout(b,s1);
setTimeout(function() {},s2);
}
그러나, 상기 루프 함수 a() 및 b()는 올바르게 실행되지 않는다. 이전 기능이 완료되었는지 여부에 관계없이 실행됩니다.
는 또한 시도했다 :
var FunctionOne = function() {
// create a deferred object
var r = $.Deferred();
// do whatever you want (e.g. ajax/animations other asyc tasks)
a();
setTimeout(function() {
// and call `resolve` on the deferred object, once you're done
r.resolve();
}, s1);
// return the deferred object
return r;
};
var FunctionTwo = function() {
b();
};
for(var i=0; i<x; i++) {
setTimeout(FunctionOne().done(FunctionTwo),s2);
}
있지만 원하는대로 작동하지 않습니다.
제발 도와 주실 수 있습니까? 다음
EDIT
함수는() 및 B()이다 :
function a() {
$.ajax({
type: $('#form1').attr('method'),
url: 'Misura',
data: $('#form1').serialize(),
beforeSend: function() {
if($.trim($('#nomeMisura').val()) == "") {
alert('<%= labels.getString("nomeMisuraObbligatorio") %>');
$('#nomeMisura').val("");
return false;
}
},
success: function (data) {
$('#misura').attr('disabled', true);
$('#pulisci').attr('disabled', false);
misurazioneInCorso = true;
}
});
}
function b() {
$.ajax({
type: $('#form1').attr('method'),
url: 'Pulisci',
data: $('#form1').serialize(),
success: function (data) {
var numeroCampioniMisurazione = Number(data.delta.campione2) - Number(data.delta.campione);
//visualizzo in tabella le misurazioni
$('#tabellaMisurazioni').append('<tr id="Misurazione"><td>'+data.nomeSessione+'</td><td>'+data.nome+'</td><td>'+data.delta.campione+'</td><td>'+data.delta.campione2+'</td><td>'+numeroCampioniMisurazione+'</td><td>'+data.delta.f1+'</td><td>'+data.delta.f2+'</td><td>'+data.delta.f3+'</td><td>'+data.delta.f4+'</td><td>'+data.delta.f5+'</td><td>'+data.delta.f6+'</td><td>'+data.delta.f7+'</td><td>'+data.delta.f8+'</td><td>'+data.delta.f9+'</td><td>'+data.delta.f10+'</td><td>'+data.delta.f11+'</td><td>'+data.delta.f12+'</td><td>'+data.delta.t1+'</td><td>'+data.delta.t2+'</td><td>'+data.delta.to+'</td><td>'+data.delta.ft+'</td><td>'+data.delta.rh+'</td></tr>');
$('#tabellaMisurazioni tbody tr:first').html('<td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td><td>---</td>');
$('#misura').attr('disabled', false);
$('#pulisci').attr('disabled', true);
$('#esportaCsvMisurazioni').attr('disabled', false);
$('#nomeMisura').val('');
misurazioneInCorso = false;
}
});
}
그래서, 나는 생각합니다()와 b() 비동기 함수입니다.
작동하지 않습니다 무엇? 'a'는 동기식인가 비동기식인가? –