gpt4 book ai didi

javascript - 两个不同的 POST 请求正在使用同一个变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:59 26 4
gpt4 key购买 nike

我有一个 Node 应用程序,它接收包含多个对象的发布请求以添加到数据库,并且对于对象,需要发生一系列涉及 dropbox api 的事情。完成一个对象的全套任务大约需要 0.5 秒。这意味着如果我提交一个包含 30 个对象的数组,这可能需要 15 秒。

当两个客户端发布 30 个对象时,它们的处理将重叠。我在发生这种情况的函数中有一个变量,用于存储处理每种情况的问题。但是,当发布请求并且运行重叠时,两个发布请求的错误都会进入同一个 issues 数组。如何让服务器调用两个不同版本的bulkAdd 函数。

bulkAdd: async function (req, callback) {
issues = []

await req.reduce((promise, audit) => {
// return promise.then(_ => dropbox_functions.createFolder(audit.scanner_ui)
let globalData;
return promise.then(_ => this.add(audit)
.then((data)=> {globalData = data; return dropbox_functions.createFolder(data.ui, data)}, (error)=> {issues.push({audit: audit, error: 'There was an error adding this case to the database'}); console.log(error)})
.then((data)=>{console.log(data, globalData);return dropbox_functions.checkScannerFolderExists(audit.scanner_ui)},(error)=>{issues.push({audit: globalData, error: 'There was an error creating the case folder in dropbox'})})
.then((data)=>{return dropbox_functions.moveFolder(audit.scanner_ui, globalData.ui)},(error)=>{issues.push({audit: globalData, error: 'No data folder was found so an empty one was created'}); return dropbox_functions.createDataFolder(globalData.ui)})
.then(()=>console.log(issues))
);
}, Promise.resolve()).catch(error => {console.log(error)});
return(issues)
},

最佳答案

您的问题与范围和封闭有关:

问题 = []

我猜这个变量是在 bulkAdd 方法之外声明的。如果不是,则在声明时不使用 varlet 关键字本质上是将变量置于全局范围内。

您需要一个仅限于该方法的本地变量:

bulkAdd: async function (req, callback) {
let issues = [];

关于javascript - 两个不同的 POST 请求正在使用同一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53713296/

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