gpt4 book ai didi

node.js - 停止执行,直到响应在 Node js 中返回

转载 作者:行者123 更新时间:2023-12-03 22:28:03 30 4
gpt4 key购买 nike

我是 node js 和 sequelize ORM 的初学者。

下面是我的代码,它有 while 循环。

        var arr = [];
var orgParntId = 7;

do {
console.log('LOG 1');
global.meal.findOne({
where: {
id: orgParntId,
},
}).then(meal => {
orgParntId = meal.parentId;
arr.push(meal.parentId);
console.log('LOG 2');
});
console.log('LOG 3');
}
while (orgParntId < 0);
console.log('LOG 4');

有一个父子关系表,当我给子元素 Id 时,它应该循环并找到所有相关项目 Id 层次结构。问题是,查询终于运行了。我添加了日志,执行该功能后,显示的日志如下所示。
LOG 1
LOG 3
LOG 4
LOG 2

最后执行查询。
我需要的是,执行上面的循环
LOG 1
LOG 2
LOG 3
LOG 1
LOG 2
LOG 3
.
.
.
LOG 4

等待直到执行sequelize ORM查询然后执行下一行的方法是什么?

最佳答案

这是 asyncawait 大放异彩的例子之一!

const main = async function () {
var arr = [];
var orgParntId = 7;

do {
const meal = await global.meal.findOne({
where: {
id: orgParntId,
},
})
orgParntId = meal.parentId;
arr.push(meal.parentId);
} while (orgParntId < 0); // are you sure this shouldn't be ">"?
return arr;
}

main().then(array => {
console.log(array);
});

这些查询的本质是异步的,您想要做的是迭代您的数据并一一查询它们的父级。使用 async/ await 您可以以顺序/同步方式编写代码并将它们包装在异步函数中。

如果您想了解 JS 如何处理异步函数,我会推荐@typ 发布的链接。

关于node.js - 停止执行,直到响应在 Node js 中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093178/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com