gpt4 book ai didi

node.js - 迭代数组,异步更新/创建对象,当一切完成后调用回调

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:24 25 4
gpt4 key购买 nike

我有一个问题,但我不知道如何解决这个问题。

我正在使用环回,但我想我迟早会在 mongodb 中遇到同样的问题。让我解释一下我在做什么:

  • 我从另一个 REST 服务获取条目,然后为 API 响应准备条目(条目尚未准备好,因为它们没有我的数据库中的 ID)
  • 在发送响应之前,我想检查数据库中是否存在条目,如果不存在:
    • 如果存在,则创建它(由 source_id 确定):
    • 使用它并将其更新到新版本
  • 发送包含条目的响应(条目现在已分配有数据库 ID)

这看起来不错,而且很容易实现,但据我所知,这还不够。我将尝试用代码进一步解释:

//This will not work since there are many async call, and fixedResults will be empty at the end
var fixedResults = [];
//results is array of entries
results.forEach(function(item) {
Entry.findOne({where: {source_id: item.source_id}}, functioN(err, res) {
//Did we find it in database?
if(res === null) {
//Create object, another async call here
fixedResults.push(newObj);
} else {
//Update object, another async call here
fixedResults.push(updatedObj);
}
});
});
callback(null, fixedResults);

注意:我遗漏了一些代码,但我认为如果您仔细阅读它,它就很不言自明了。

所以我想迭代所有对象,在数据库中创建或更新它们,然后当所有对象都更新/创建时,使用它们。我该怎么做?

最佳答案

您可以使用 promise 。它们是在其他条件完成后将调用的回调。这是将 Promise 链接在一起的示例 https://coderwall.com/p/ijy61g .

q 库是一个很好的库 - https://github.com/kriskowal/q

这个问题how to use q.js promises to work with multiple asynchronous operations给出了一个很好的代码示例,说明如何构建它们。

关于node.js - 迭代数组,异步更新/创建对象,当一切完成后调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788753/

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