У меня есть серия операторов if в цикле, подобном следующему:
for( var i = 0; i < results_list.length; i++){
find = await results_list[i];
//result 1
if (find.Process == "one") {
await stored_proc(38, find.Num, find.Status)
}
//result 2
if(find.Process == "two") {
await stored_proc(37, find.Num, find.Status)
}
//result 3
if(find.Process == "three") {
await stored_proc(39, find.Num, find.Status)
}
}
Моя проблема заключается в том, что он выполняет все эти синхронно, вызывая отключение моей хранимой процедуры.Как я могу убедиться, что каждый оператор if
ожидает выполнения предыдущего до выполнения?
Также важно знать, что каждый оператор if
не всегда выполняется, например, при одном запуске моего кода //result 2
может выполняться, а //result 1
и //result 3
может не выполняться.
Иногда все они могут работать, а иногда и вовсе не запускаться.
Спасибо за любую помощь!
РЕДАКТИРОВАТЬ: Вот моя функция хранимой процедуры
async function stored_proc(opID, num, stat){
sql.executeTransaction( connection, {
procedure: "<stored procedure>",
params: {
OpID: {
val: opID,
type: sql.INT
},
num: {
val: num,
type: sql.STRING
},
Pass: {
val: stat,
type: sql.INT
},
ExtraData: {
val: "upload",
type: sql.STRING
}
}
} ).then( async function( data ) {
return data.transaction
.commit()
.then( async function() {
console.log("Updated database...." );
} );
}, function( err ) {
console.log( err );
} );
}
ВТОРОЕ РЕДАКТИРОВАНИЕ: Я рассмотрел это еще несколько раз и обнаружил, что если для его загрузки имеется более одного результата, он НИКОГДА не загрузит первые наборыРезультаты.Я пробежал несколько console.log()
s и обнаружил, что он всегда получит find.Num
и find.Status
.Он будет регистрировать только Updated database
для каждого результата после первого.Я надеюсь, что это имеет смысл