2015-09-08 210 views
0

我無法在Web SQL事務中集成JavaScript承諾。我能夠獲得日誌「測試」,但我無法獲得「查詢結果」日誌。請幫助我我是JavaScript新手。任何幫助,真的很感激。以下是我的代碼。SQL承諾中的Javascript承諾

function sample() 
{ 
    return executeTransaction() 
    .then(function(results) 
    { 
     console.log("Query Results:"); 
    }); 
} 

function executeTransaction(query) 
{ 
    console.log("Transaction Query : " + query); 

    db.transaction(function(transaction) 
    { 
     transaction.executeSql(query, [], function(transaction, result) 
     { 
      console.log("Test: " + JSON.stringify(result)); 
      return Promise.resolve(result); 

     } 
     , nullHandler 
     , errorHandler); 
    }); 


} 

function nullHandler(result) 
{ 
    console.log("Null Log : " + JSON.stringfy(result)); 

} 

function errorHandler(error) 
{ 
    console.log("Error Log : " + error); 
} 
+0

你的'executeTransaction'事務函數沒有返回任何東西(更不用說承諾) - ne ither是匿名函數'function(transaction)' –

回答

1

executeTransaction功能不返回任何東西(更不用說承諾) - 既不是乍一看匿名功能function(transaction)

,並在不知道DB庫太多了你正在使用,你需要做的(至少):

function executeTransaction(query) { 
    console.log("Transaction Query : " + query); 
    return new Promise(function (resolve, reject) { 
     db.transaction(function (transaction) { 
      transaction.executeSql(query, [], function (transaction, result) { 
       console.log("Test: " + JSON.stringify(result)); 
       resolve(result); // here the returned Promise is resolved 
      }, nullHandler, errorHandler); 
     }); 
    }); 
} 
+0

非常感謝。有用 :) – Avinash