Я надеюсь, что кто-то может помочь мне лучше понять обещания. Я довольно новичок с ними. Я делаю запрос БД с обещаниями, когда результат верен, получите массив данных. Затем мне нужно сделать цикл, итерации этого массива и выполнить для каждой операции удаления элемента и после этого удалить операцию на другую операцию отправки, когда обе операции закончены, затем повторить процесс для каждого элемента массива, но его необходимо завершить для каждый элемент завершает операцию и посылает операцию перед запуском другого элемента массива ... с моим кодом, которого не происходит, цикл делает операцию удаления для каждого элемента, не ожидая результата возврата и отправки операции. Обе операции удаляют и доставка имеют структуруПравильный способ сделать цикл с обещанием Q.js в nodejs
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) {
});
Возможный дубликат http://stackoverflow.com/questions/24660096/correct-way-to-write-loops-for-promise? – zangw
Я не работаю с bluebird, я работаю с Q.js – AnD
https://gist.github.com/neilk/6431795, образец кода Q.js, может помочь вам ... – zangw