비동기 작업 체인에 의존하기 때문에 두 가지 기능에 문제가 있습니다. clearAll
은 데이터베이스를 비운 다음 페이지를 다시로드해야하는 클릭 이벤트입니다. Clear
은 데이터베이스 모듈 (database.clear
)의 함수입니다.비동기 JS 프로세스 재 작성 (JQuery Promise 사용 가능)
JQuery Promises/Deffered를 적절하게 사용하고 싶습니다. 그러나이 유스 케이스에 대해서는 상당히 이해할 수 없습니다. 내가 @Larry K의 대답
clearAll: function()
{
var refresh = function()
{
localStorage.clear();
sessionStorage.clear();
window.location.href = window.location.pathname;
console.log("feeling refreshed");
};
database.open();
//This is what I'd like to be able to do
//With Jquery or callbacks
$.when(database.clear()).then(refresh);
},
clear: function (callback, errorCallback)
{
var sql = "SELECT name FROM sqlite_master WHERE type='table' AND name != ?",
args = ["__WebKitDatabaseInfoTable__"];
var dbTableNamesResult = function (tx, result)
{
var dropSql = "";
for (var i = 0; i < result.rows.length; i++)
{
dropSql = "DROP TABLE IF EXISTS " + result.rows.item(i).name + "; ";
execute(dropSql);
}
};
execute(sql, args, dbTableNamesResult);
},
비동기 흐름이 많은 경우 https://github.com/caolan/async를 확인하십시오. 세상을 행복한 곳으로 만듭니다. –
@Ekin 나는 asnyc 흐름이 많고 async.js는 티켓처럼 보입니다. 하지만 전체 코드를 다시 작성하기 전에 위의 코드가 Async.js에서 어떻게 실행되는지 보여 줄 수 있습니까? 나는 우리가 말하는 것처럼 그것을 내고있다. – JonWells