我看了类似的问题,没有找到一个解决方案,我可以实现到我自己的代码,因此我做了这篇文章。我有以下代码:
async function getProgram(id) {
let study = "";
pool.query('SELECT name FROM Programs WHERE id=?', [id], (error, result) => {
if (error) return console.error(error); // If error, show error in console (in red text) and return
console.log(result[0].name);
return result[0].name;
});
return study;
}
let program = (id) => {
await getProgram(id)
.then(study => {
return study;
})
.catch(error => {
console.error(error);
});
}
console.log(program(2));
最后一个console.log返回undefined,尽管pool.query中的console日志提供了我要查找的正确字符串。我尝试过的这段代码的另一个版本给出了暂挂的promise,而不是未定义的promise。
通过阅读其他文章,我理解这是因为我没有将wait与async函数一起使用。问题是,如果我尝试在最后一个console.log中插入await:console.log(await程序(2))
或在程序函数中:
let program=(id)=
我仍然是非常新的promise/异步/等待,所以我肯定我错过了一些基本的东西。.感谢所有的帮助。
只能在异步函数内部使用wait。您应该这样定义程序:
let program = async (id) => {
await getProgram(id)
.then(study => {
return study;
})
.catch(error => {
console.error(error);
});
}
接下来,now程序是一个promise,console.log(程序(2))
不会打印已解决的promise。为此,您需要使用一些其他语法,如:
program(2).then(result => console.log(result));
必须这样做,因为wait
不能在顶级代码上使用(至少不能在所有浏览器 /node引擎中使用)。
最后,我认为您还应该重写getProgram,如下所示:
function getProgram(id) {
return new Promise((resolve,reject) => {
pool.query('SELECT name FROM Programs WHERE id=?', [id], (error, result) => {
if (error) {
console.error(error); // If error, show error in console (in red text) and return
reject(error)
}
console.log(result[0].name);
resolve(result[0].name);
});
});
}
请注意research
没有做任何事情,以及您需要如何将池异步函数转换为promise
我试图理解为什么这段代码返回“Promise{pending}”。 当我通过reduceDirections()函数时,我可以看到我得到了想要的结果。但是当我(一行之后)时,我会改为“Promise pending” 很抱歉,我不理解promise和异步等待。我曾尝试在mdn上阅读和观看视频,但我不知道如何将它们显示的内容转移到这个问题上。提前感谢您的帮助!
我真的需要温习一下我的异步等待和promise。我想要一些建议。 我正在对firebase firestore进行异步函数调用。函数应根据单个输入参数返回字符串。 该功能适用于1-1用户聊天。该功能是创建聊天/查找现有聊天,并返回其ID。 现在,我得到的作为返回值的和不知道为什么。除了返回之外,该函数还能正常工作。 我有两个功能。一个是React类组件生命周期方法,另一个是我的firebase异步
我正在使用编写promise代码。然后现在,我决定使用wait/async编写它。我在promise中调用了一个函数add_,然后在中调用了另一个函数。然后是该函数的一部分。这是我使用的代码。然后 这是使用wait/async的代码。 使用await/async的代码显示了一个错误,即add\u lessons是意外标识符。那么,告诉我如何在promise中定义异步函数?
我正在使用下面的gql查询生成一个GraphQL请求。 但是当我在下面的代码中注销它时,它返回未定义的。 知道我做错了什么吗?该怎么纠正?
我试图了解异步/等待如何与promise一起工作。 据我所知,await应该是阻塞的,在上面的代码中,它似乎阻塞了返回带有原语
我正在学习react native,我遇到了一个问题。为什么从异步函数返回时获取数据会返回一个promise,但在异步函数本身中,它会正确地返回一个对象数组? 在上,我调用我的异步函数,该函数反过来提取api url: 在,我得到了正确的json对象列表,我可以使用。但后来,返回包含奇数数据的promise: ... 我再也找不到我的json对象了。为什么会这样?更重要的是,如何在中检索json数