두 개의 별도 비동기 호출을 수행하는 방법을 알아낼 수 없으며 call1이 call2를 마칠 때까지 기다렸거나, 물건을 찾거나, 콜백을 사용하거나 약속 할 필요가 있다고 생각하지만 그것을 얻지 못한다면 누구나 간단한 설명에 대한 링크를 가지고 있습니까? 또는 누구든지 내 코드를 조정하는 방법을 제안 할 수 있습니까?자바 스크립트에서 여러 비동기 데이터베이스 호출
나는 코드를 약간 단순화했다.
constructButton이 완료된 후 다음 레코드 만 읽도록하려면 어떻게해야합니까? 여기
function justAfunction(){
var query = "SELECT * FROM trlydp where tdrexr = " + route + " order by tdrseq;";
try {
localDB.transaction(function(transaction){
transaction.executeSql(query, [], function(transaction, results){
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i);
constructButton();
}
}, function(transaction, error){
updateStatus("Error: " + error.code + "<br>Message: " + error.message);
});
});
}
catch (e) {
updateStatus("Error: Unable to select data from the db " + e + ".");
}
}
function constructButton(){
disabled = false;
var query = 'SELECT * FROM trlylp';
//alert(query);
try {
localDB.transaction(function(transaction){
transaction.executeSql(query, [], function(transaction, results){
alert(results.rows.length);
if (results.rows.length != 0) {
disabled = true;
}
}, function(transaction, error){
updateStatus("Error: " + error.code + "<br>Message: " + error.message);
});
});
}
catch (e) {
updateStatus("Error: Unable to select data from the db " + e + ".");
}
}
이 접근법에서는 10 개의 다른 sql 호출을 가져와야하는 경우 함수 수가 늘어납니다. 더 좋은 방법은 하나의 함수가 다른 함수가 연결 된 방식으로 완료된 후에 만 실행되도록하는 것입니다. – LPD
연결된 익명 기능을 사용 하시겠습니까? 단순히 함수 호출을 한 번에 호출하는 것이 아니라 순서대로 호출해야한다고 말하면됩니다. –
다른 읽기 후에는 10 번의 호출에 대해 10 개의 함수를 정의하는 것에 반대하는 것처럼 보입니다. SQL과 대상 객체를 params로 사용하는 하나의 템플릿 함수를 정의 할 수 있습니다. –