Ionic 2で成功したSQLiteトランザクションのコールバックを取得したいと考えています。私はまだ現在HTML5 Promiseを学習していますが、まだ少し混乱しています。以前はjQuery Deferredを頻繁に使用していたので、以前はjQueryを使っていたものに適応しようとしています。私はSqlResult.prototype.execSqlCustomDeferred.done(function(res){...})
で、非同期結果を得ていたというパターンではionic 2 Promiseでコールバックを管理するSQLite
var SqlResult = function(sqlToExecute,bracketValues){
this.sqlToExecute = sqlToExecute;
this.bracketValues =bracketValues;
};
SqlResult.prototype.execSqlCustomDeferred = function(){
var execSqlCustomDeferredRes = $.Deferred();
var execSqlCustomDeferredResProm = execSqlCustomDeferredRes.promise();
var sqlToExecuteForTx = this.sqlToExecute;
var bracketValuesForTx = this.bracketValues;
DbManagement.db.transaction(function(tx){
tx.executeSql(sqlToExecuteForTx,bracketValuesForTx,success,error);
function success(tx,rs){
execSqlCustomDeferredRes.resolve(rs);
}
function error(tx,error){
execSqlCustomDeferredRes.reject(error);
}
});
return execSqlCustomDeferredResProm;
};
:イオン2前
は、私は私の非同期SQLを実行するには、次のjQueryのパターンを使用していました。
は今、私は次を考え、物事は約束パターンを使用するように命じすべきかを理解するために苦労したが、それは一致しません:resolve()
かreject()
ませんので
この場合は機能しません存在する(それは蒸散しない)。
private execSqlCustom = (sqlToExecute:string,bracketValues:Array<any>) => {
let sqlToExecuteForTx:string = sqlToExecute;
let bracketValueForTx:Array<any> = bracketValues;
return this.db.transaction(
function(tx){
tx.executeSql(sqlToExecuteForTx,bracketValueForTx,success,error);
function success(tx,rs){
resolve(rs);
}
function error(tx,error){
console.log('execSqlCustom error ' + error.message);
reject(error);
}
}
);
これは、どちらも私はそれがtranspiles(私は(これを)コンテキストを失うと思うが、実行時にそれがあることを私に伝えますので、動作しません:それは未定義
のデシベルを読み取ることができませんを
):
private execSqlCustom = (sqlToExecute:string,bracketValues:Array<any>) => { let sqlToExecuteForTx:string = sqlToExecute; let bracketValueForTx:Array<any> = bracketValues; return new Promise(function(resolve,reject){ this.db.transaction( function(tx){ tx.executeSql(sqlToExecuteForTx,bracketValueForTx,resolve,reject); } );
誰もが私が間違って何をしてきたスポットいますか?