jQuery 약속을 사용하여 웹 SQL 데이터베이스 테이블에서 데이터 세트를 반환하고 $.when
을 사용하면 데이터 세트를 반환하고이 링크에 따라 $.when
안에 사용할 수 있습니다.jQuery 약속을 사용하여 데이터베이스에서 값 가져 오기
Return multiple rows as an array from a WebSQL databse using javaScript
하지만 어떻게 데이터가 외부 $.when
설정하는 것이 사용할 수 있습니까?
var contact = getContacts();
$.when(contact).done(function(cont) {
for(var i = 0; i < cont.length; i++){
// can use the 'cont' variable to access data in the table
// inside this '$.when', but can't use it outside this $.when block
}
});
가 어떻게 이것을 달성 할 수
다음function getContacts(){
var defer = $.Deferred();
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM contacts', [], function(tx, results) {
defer.resolve(results.rows);
},function(tx, err){
alert("An internal error occurred. " + err.message);
});
});
return defer.promise();
}
는 반환 및 $.when
내부에 그 값을 사용하는 소스입니다 : 여기
당신은 정말'$ .when() 외부에서 사용할 수 없습니다를 참조하십시오. (완료)'콜백 그 유일한 장소이기 때문에 당신이 안정적으로 존재하는 것을 알고있다. 값이 준비되면 언제 어디서나 타이밍을 완전히 알 수 없습니다. 원하는 경우 다른 함수를 호출하여 데이터를 전달할 수 있지만 비동기 응답을 사용해야합니다. – jfriend00
데이터 집합을 $ .when(). done() 안에있는 변수에 전달할 수 없으며 외부에서 호출 할 수 없습니다. 그럴 수있어? – vidulaJ
죄송합니다, 귀하의 마지막 의견의 의미를 모르겠습니다. 약속과 비동기 코딩을 이해하는 데있어 중요한 부분은'.done()'핸들러가 나중에 언젠가 호출되고, 언제 호출 될 지 당신이 모른다는 것입니다. 그래서, 당신은'.done()'핸들러 내에서 다른 외부 변수에 결과를 넣을 수 있지만, 다른 코드는'.done() '핸들러 내에서 그 자체가 호출되지 않는 한 데이터가 거기에있을 때까지 기다릴 방법이 없습니다.()'핸들러. – jfriend00