Nodejs:在express中监听数组



这是我的代码:

let newArray = []
const myProcess = (id) => {
// after 5 seconds, add id to newArray
}
router.use('/', async (req, res) => {
myProcess(req.query.id);
if (newArray.includes(req.query.id) {
res.send({})
}
}

但是这个代码不适合我

我想在添加id到newArray后发送{}

你说:

  • myProcess将在5秒后为array添加ID
  • 您不想发送{},直到添加了ID

这意味着你的代码在5秒内不会响应/的请求,这在"我在等待某事"中是很长的一段时间。条款。:-)只是标记一下。

但是要做到这一点,让myProcess返回一个承诺,一旦它将ID添加到数组中,它就会履行,然后等待该承诺在发送响应之前解决:

let newArray = [];
const myProcess = (id) => {
return new Promise((resolve, reject) => {
// after 5 seconds, add id to newArray and call
// `resolve` (or call `reject` if something
// goes wrong)
});
};
router.use("/", async (req, res) => {
myProcess(req.query.id)
.then(() => {
if (newArray.includes(req.query.id)) {
res.send({});
} else {
// ...send something else...
}
})
.catch((error) => {
// ...send an error reply...
});
});

最新更新