如何使用 angular 2 return promise 的值
How to return value of promise using angular 2
这是我的承诺函数,我需要 return rs.rows.item(0);
的值
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);
});
});
});
}
return 值我得到了一个像这个图像的对象
我需要像这个例子一样
var customer = getCustomer();
customer.name;
customer.email;
Promises 为我们提供了抽象,帮助我们处理应用程序的异步性质。由于我们不知道这些操作需要多少时间(因此,数据何时可用),您需要使用 then()
方法在数据准备好使用时执行一些代码:
this.getCustomer()
.then((data) => {
// Here you can use the data because it's ready
// this.myVariable = data;
})
.catch((ex) => {
console.log(ex);
});
首先,您需要 func 来获取所有数据:
getAll(): Promise<Phrase[]> {
return phrasesPromise;
}
其次,如果你需要一件可以使用
ngOnInit() {
this.phraseService
.getAll()
.then((result: Phrase[]) => this.phrases = result);
}
您可以像这样使用 await operator:
getCustomer(): Promise<any> {
[...]
}
async functionThatNeedsCustomer() {
const customer = await getCustomer();
const name = customer.email;
const email = customer.email;
}
await 运算符 等待 形成 return 结果的 Promise。
这只能在异步函数内部完成(使函数异步将使它成为 return 承诺本身)。
这是一个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;
}
这是我的承诺函数,我需要 return rs.rows.item(0);
的值 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);
});
});
});
}
return 值我得到了一个像这个图像的对象
我需要像这个例子一样
var customer = getCustomer();
customer.name;
customer.email;
Promises 为我们提供了抽象,帮助我们处理应用程序的异步性质。由于我们不知道这些操作需要多少时间(因此,数据何时可用),您需要使用 then()
方法在数据准备好使用时执行一些代码:
this.getCustomer()
.then((data) => {
// Here you can use the data because it's ready
// this.myVariable = data;
})
.catch((ex) => {
console.log(ex);
});
首先,您需要 func 来获取所有数据:
getAll(): Promise<Phrase[]> {
return phrasesPromise;
}
其次,如果你需要一件可以使用
ngOnInit() {
this.phraseService
.getAll()
.then((result: Phrase[]) => this.phrases = result);
}
您可以像这样使用 await operator:
getCustomer(): Promise<any> {
[...]
}
async functionThatNeedsCustomer() {
const customer = await getCustomer();
const name = customer.email;
const email = customer.email;
}
await 运算符 等待 形成 return 结果的 Promise。 这只能在异步函数内部完成(使函数异步将使它成为 return 承诺本身)。
这是一个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;
}