これは、rs.rows.item(0)の値を返す必要がある私のpromise関数です。
public getCustomer() : any
{
let db = window.sqlitePlugin.openDatabase({name: 'data.db', location: 'default'});
return new Promise((resolve, reject) =>
{
db.transaction(function(tx)
{
tx.executeSql('SELECT * FROM customer ORDER BY customerId DESC LIMIT 1', [], function(tx, rs)
{
return resolve(rs.rows.item(0));
},
function(tx, error)
{
console.log('SELECT error: ' + error.message);
reject(error);
});
});
});
}
私はこの例のようになる必要があります
var customer = getCustomer();
customer.name;
customer.email;
まず、すべてのデータを取得するにはfuncが必要です。
getAll(): Promise<Phrase[]> {
return phrasesPromise;
}
第二に、あなたが使用できる1つのアイテムが必要な場合
ngOnInit() {
this.phraseService
.getAll()
.then((result: Phrase[]) => this.phrases = result);
}
Promisesアプリケーションの非同期性に対処するのに役立つ抽象化を提供します。これらの操作にかかる時間(したがって、データがいつ利用可能になるか)がわからないため、データの準備ができたら、then()
メソッドを使用してコードを実行する必要があります。中古:
this.getCustomer()
.then((data) => {
// Here you can use the data because it's ready
// this.myVariable = data;
})
.catch((ex) => {
console.log(ex);
});
これはPromise
なので、then
を使用する必要があります。
getCustomer()
.then(customer => {
customer.name;
customer.email;
});
TypeScript、またはasync
/await
をサポートするバージョンのJavaScriptを使用している場合は、次の操作を実行できます。
var customer = await getCustomer();
customer.name;
customer.email;
上記は、次のようにasync
関数に含める必要があります。
async displayCustomerDetails() {
var customer = await getCustomer();
customer.name;
customer.email;
}
await operator を次のように使用できます。
getCustomer(): Promise<any> {
[...]
}
async functionThatNeedsCustomer() {
const customer = await getCustomer();
const name = customer.email;
const email = customer.email;
}
Await演算子awaitsは、結果を返すためにPromiseを形成します。これは、非同期関数内でのみ実行できます(関数を非同期にすると、promise自体が返されます)。