gpt4 book ai didi

javascript - 在nodejs中使用Q.js Promise进行循环的正确方法

转载 作者:行者123 更新时间:2023-12-03 07:27:44 24 4
gpt4 key购买 nike

我希望有人能帮助我更好地理解这些 promise 。我对他们来说还是个新手。我正在使用 promise 进行数据库查询,当结果正确时获取数据数组。然后我需要创建一个循环迭代这个数组,并对每个元素执行删除操作,然后在删除操作到另一个发送操作时,当两个操作完成后,然后,对数组的每个元素重复该过程,但必须完成每个元素在开始另一个数组元素之前完成操作和发送操作...我的代码不会发生这种情况,循环对每个元素进行删除操作,而不等待删除和发送操作返回结果... 操作删除和运输都有结构

function x (makeQuery){
.......
var deferred = Q.defer();
.....
function(err, result) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve(result);
}

});
return deferred.promise;
}

我的代码是:

 getElementInPostgres(makeQuery)
.then(function (obj) {
if (...){
results= obj['rows']
index =0
for (var i = 0; i < results.length; i++) {
var notification = {}
notification.tag='SubscriptionNode'
notification.indexSocket=results[i]['indexsocket']
notification.clientID=results[i]['clientid']
notification.callbackURL=results[i]['callbackurl']
notification.deploymentID=results[i]['deploymentid']
notification.clusterID=results[i]['clusterid']
notification.date=results[i]['registered']
var query = "DELETE FROM.....";
var params = [notification.indexSocket];
deleteInPostgres(query,params,notification)
.then(function (notification) {
if(notification.clientID){
sendInfoToPython(notification)
.then(function (obj) {
..........
}).fail(function (err) {
......
});
}

}).fail(function (err) {
......
});
}
}
else{
.........
}
}).fail(function (err) {

});

最佳答案

您可以继续使用 Q,但要迭代第一个结果,您可以使用 async.each ( https://github.com/caolan/async#each ) 。在 iteratee 中您可以执行删除任务。在迭代的回调中恢复发送操作。它将使您的代码更简单、更简洁

关于javascript - 在nodejs中使用Q.js Promise进行循环的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931250/

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