gpt4 book ai didi

node.js - 值在 setInterval 方法 Node js 的回调内的回调中被覆盖

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:29 24 4
gpt4 key购买 nike

我遇到的情况是,我有一组员工数据,我需要为每个员工并行处理一些东西。为了实现它并完成任务,我将这些内容分成四个方法,每个方法都有一个回调函数,相互调用并返回回调函数。我正在使用

async.eachSeries

为员工数组的每个元素启动该过程。

在最后一个方法中,如果未达到所需的响应,我必须设置 setInterval 来执行相同的任务,直到重复任务的过程持续到 5 次才清除此间隔(如果未收到 5 次所需的值,但在第 5 次后清除)。

现在,发生的问题是我在 setInterval 内处理的数据被最后一个员工的值覆盖。

因此,我无法跟踪所有员工数组元素发生的流程,而且最后一个员工的处理细节也变得困惑。

在我用于执行任务的四种方法之间,执行将数据保存到 redis 、 MongoDB 、外部 Api 在回调中给出响应的过程。

任何人都可以提出更好的方法来做到这一点,而且我觉得问题正在发生,因为我没有从 SetInterval 方法()返回任何回调。但是由于该方法本身是一个异步方法,所以我不知道如何处理这种情况。

EmployeeArray




async.eachSeries() used to process EmployeeArray

对于每个我有四个回调方法。

async.eachSeries() {   
Callback1(){
Callback2(){
Callback3(){
Callback4(){
SetInterval(No CallBack inside this from my side)
}
}
}
}
}

最佳答案

据我所知,异步每个函数都会并行处理。您还可以使用异步 waterfall 来使您的代码更加干净。尝试这样的事情。

async.each(openFiles, function(file, callback1) {
async.waterfall([
function(callback) {
callback(null, 'one', 'two');
},
function(arg1, arg2, callback) {
// arg1 now equals 'one' and arg2 now equals 'two'
callback(null, 'three');
},
function(arg1, callback) {
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
callback1(err);
});
}, function(err){
//if you come here without error your data is processed
});

关于node.js - 值在 setInterval 方法 Node js 的回调内的回调中被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973749/

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