私は、サーバーの速度と負荷を最適化しようとするために、次の処理を行っています。しかし、物事は順不同で始まり、なぜ私は確信していません。それは私に、私が理解していない何かが起こっていると信じさせる。ここでは、コードは次のようになります。Angular2:コールバックとREST API呼び出しによる再帰
getInfo (startIndex, endIndex) { //starts with 0, 3 as the two params
var arr = globalArray.splice(startIndex, endIndex);
var tempThis = this;
this.function1(arr, function() {
this.function2(arr, function() {
if (end != tempThis.globalArray.length - 1) {
var newStart = endIndex;
var newEnd = endIndex + 3;
if (newEnd > tempThis.globalArray.length - 1) {
newEnd = tempThis.globalArray.length - 1;
}
console.log("about to recurse");
tempThis.getInfo(newStart, newEnd);
}
})
})
}
function1 (list) {
list.forEach(function (thing) {
httpCall(params, function (data, error) {
//logic
if(list.indexOf(thing) == list.length - 1) {
callback();
}
})
})
}
function2 (list) {
list.forEach(function (thing) {
httpCall(params, function (data, error) {
//logic
if(list.indexOf(thing) == list.length - 1) {
callback();
}
})
})
}
このプロセスの意図はシーケンシャルすべてを取得することです。だから、私は大規模なglobalListを持っています。私はそれを一度に3つ分けて、私の論理を通して送る。私はコールバックを呼び出すミニリストの最後のインデックス上にあることを見つけるとfunction2のロジックに移動する必要があります。その後、インデックスをインクリメントして再帰する必要があります。
私がコールバックで理解したことは、基本的にプロセスを同期させるべきだということです。しかし、コールバックは予測不能な順序で呼び出されており、多くの場合、頻繁に呼び出されています。私はfunction1と2の論理が健全だと感じています。
質問:私の理解は間違っていますか?このプロセスは良いことではありませんか?