配列を反復処理し、各項目に連鎖する約束を送る方法がわかりません。私はDBSchema.executeMigrations
を下に定義しようとしています(そこのコメントの詳細)。typescriptで引数の静的な配列から約束を結ぶ方法
migrations
が時間とともに成長すると仮定します。だから、今は3つの議論だが、来年は100になるだろう。私はこれを繰り返す必要がある。
export class DBConnection {
exec(query): Promise<any> {
let _this = this;
return new Promise((resolve) => {
_this.get().then((db) => {
db.executeSql(query, {}).then(
(result) => {
resolve(result);
},
(err) => {
console.log('Unable to execute query: ' + err.message);
}
);
});
});
}
}
export class DBSchema {
constructor(public db_connection: DBConnection){};
static migrations = [
"CREATE TABLE IF NOT EXISTS events(id INTEGER PRIMARY KEY NOT NULL, title STRING)",
"CREATE TABLE IF NOT EXISTS news(id INTEGER PRIMARY KEY NOT NULL, title STRING)",
"CREATE TABLE IF NOT EXISTS whatever(id INTEGER PRIMARY KEY NOT NULL, title STRING)"
];
executeMigrations(): any {
// send each migration to db_connection.exec
// do it in order
// return a promise that resolves when all of them are done
}
}
すばらしい素晴らしい応答のおかげで、お元気です... exec()の 'then'行のどの部分が不要ですか? – jsharpe
あなたは大歓迎です!それについて考えると、 'res'という値は' db.executeSql() 'から返され/解決されるので、結果を単に返すために余分な' .then() 'を追加する必要はありません。実際に結果が返されたことを示すためにコードに含めました。それを実証する[this jsfiddle](https://jsfiddle.net/0sL1ffa4/)を見てください! –