【发布时间】:2019-04-28 20:31:45
【问题描述】:
我不确定这个问题是否可以实现。
我将 node.js 与 express.js 和 MySQL 数据库一起使用。
我在 MySQL 数据库中有几条记录。这些记录正在继续更新。
所以,假设我从 MySQL 获取一些记录,并使用返回 promise 的 demoFunction 函数对每条记录进行操作。
在这个函数中,我试图检查 MySQL 数据库中的新记录。如果我有新记录,那么我想将这条新记录的操作推送到当前的Promise.all 队列中。这可能吗?如果不可能,那么我如何通过继续执行来实现这个目标?
所以,我的代码是这样的,
const demoFunction = (arg1, arg2) => {
checkForNewData();
return new Promise((resolve, reject) => {
// Rest of my code is here for this function
// This function will be take around 5 to 10 mins
});
};
const dataFromDatabase = "Here i'm getting some data into array of object from SQL database";
let allPromises = dataFromDatabase.map((obj) => demoFunction(obj.arg1, obj.arg1));
const checkForNewData = () => {
const newDataFromDatabase = "Here i'm getting some new data into array of object from SQL database";
for (let i = 0; i < newDataFromDatabase.length; i++) {
allPromises.push(demoFunction(newDataFromDatabase[i].arg1, newDataFromDatabase[i].arg2));
}
};
return Promise.all(allPromises)
.then(() => {
// response
})
.catch((e) => {
console.log(e);
})
【问题讨论】:
-
dataFromDatabase和newDataFromDatabase是什么?承诺?
标签: asynchronous promise async-await synchronous