Async/await 功能推送不工作
Async/await with function push not working
我对 async - await
有疑问。
发生了什么事?
我有一个回调函数,它发送一个包含有效对象和无效对象的对象数组给其他函数。
在函数中,我进行验证,如果有效,然后执行 push
将其保存在数组中。
我想在所有对象都有效时将它传递给另一个函数。但是它通过一个而不是全部。
有人可以帮助我吗?
我调用回调传递对象数组是否有效的函数:
const getNewNotification = async (callback) => {
await pool.query('SELECT * from alerts', (err, res) => {
if (err) {
console.log(err)
} else {
const newsNotification = res.rows;
callback(newsNotification)
}
})
}
我创建的函数 push
:
const sendNotification = async (notification, callback) => {
let domain;
let subdomain;
let name;
let userHistory;
let userDescription;
let sequenceHistory;
let personYes = [];
let person;
await notification.map(async (user) => {
// VERIFY IF THE OBJECT IS VALID
await pool.query(`SELECT * from wfm where mail = '${user.id}''`, async (err, res) => {
if (res.rows.length !== 0) {
person = {
domain: res.rows[0].domain_name,
subdomain: res.rows[0].subdomain_name,
name: res.rows[0].name,
userHistory: user.id,
userDescription: user.change_description,
sequenceHistory: user.sequence,
}
// MAKE THE PUSH...
await personYes.push(person);
callback2(personYes);
}
基本上,我希望函数 sendNotification
只在数据结束时发送数据,我该怎么做?
我认为发生这种情况是因为您混合了两件事,要么您应该使用不带 await 语句的回调方法,要么您应该正确使用 Promise。在您的情况下,您可以使用 -
修复它
而不是这个
await pool.query(`SELECT * from wfm where mail = '${user.id}''`, async (err, res) => {
});
你应该使用-
let response = await pool.query(`SELECT * from wfm where mail = '${user.id}'`)
你的回调代码可以放在底部。
我对 async - await
有疑问。
发生了什么事?
我有一个回调函数,它发送一个包含有效对象和无效对象的对象数组给其他函数。
在函数中,我进行验证,如果有效,然后执行 push
将其保存在数组中。
我想在所有对象都有效时将它传递给另一个函数。但是它通过一个而不是全部。
有人可以帮助我吗?
我调用回调传递对象数组是否有效的函数:
const getNewNotification = async (callback) => {
await pool.query('SELECT * from alerts', (err, res) => {
if (err) {
console.log(err)
} else {
const newsNotification = res.rows;
callback(newsNotification)
}
})
}
我创建的函数 push
:
const sendNotification = async (notification, callback) => {
let domain;
let subdomain;
let name;
let userHistory;
let userDescription;
let sequenceHistory;
let personYes = [];
let person;
await notification.map(async (user) => {
// VERIFY IF THE OBJECT IS VALID
await pool.query(`SELECT * from wfm where mail = '${user.id}''`, async (err, res) => {
if (res.rows.length !== 0) {
person = {
domain: res.rows[0].domain_name,
subdomain: res.rows[0].subdomain_name,
name: res.rows[0].name,
userHistory: user.id,
userDescription: user.change_description,
sequenceHistory: user.sequence,
}
// MAKE THE PUSH...
await personYes.push(person);
callback2(personYes);
}
基本上,我希望函数 sendNotification
只在数据结束时发送数据,我该怎么做?
我认为发生这种情况是因为您混合了两件事,要么您应该使用不带 await 语句的回调方法,要么您应该正确使用 Promise。在您的情况下,您可以使用 -
修复它而不是这个
await pool.query(`SELECT * from wfm where mail = '${user.id}''`, async (err, res) => {
});
你应该使用-
let response = await pool.query(`SELECT * from wfm where mail = '${user.id}'`)
你的回调代码可以放在底部。