我进行了API连接以获取查询结果(数组数组)。但是我无法将结果保存到另一个变量中,无法将其与我创建的其他函数一起使用。我得到Promise {<Pending>}
下面是使用console.log且不与变量关联的代码示例
client.query('SELECT * FROM "INDIGO MONITORING" LIMIT 2;').then(result => console.log(result.rows)).catch(error => console.log(error));
结果示例:good Result when testing with console.log
in .then
这是我尝试保存结果并返回Promise {<pending>}
let results = client.query('SELECT * FROM "INDIGO MONITORING" LIMIT 2;').then(result => {return result}).catch(error => console.log(error));
答案 0 :(得分:0)
您可以使用await
来执行此操作,但是(当然)这将阻止整个调用函数,直到答应完成为止。另外,您不需要then(result => {return result})
,这是默认行为。
let results = await client.query('SELECT * FROM "INDIGO MONITORING" LIMIT 2;').catch(error => console.log(error));
注意:为了使上面的行起作用,它必须在用async
声明的函数内(例如async function f() {...}
)。
答案 1 :(得分:0)
我会用另一种方式写它。
chrome://bluetooth-internals/#devices
答案 2 :(得分:0)
您可以使用async-await
。
const getResults = async() => {
try {
const results = await client.query('SELECT * FROM "INDIGO MONITORING" LIMIT 2;');
return results;
} catch (err) {
console.log(err);
return null;
}
}
下面,我模拟了一个示例Promise
以及处理和处理响应的方式。在这两种方法中,承诺都将在500ms
之后得到解决。
.then
和.catch
const examplePromise = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success");
}, 500)
})
}
examplePromise().then((res) => {
console.log(res);
}).catch(err => {
console.log(err)
});
async
和await
。对于async-await
,错误将使用try/catch
处理/捕获。
const examplePromise = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success");
}, 500)
})
}
const asynAwaitEx = async() => {
try {
const res = await examplePromise();
console.log(res);
} catch (err) {
console.log(err);
}
}
asynAwaitEx();