非同期で計算する場合の問題は、要素が順番に処理されないことです。重要なのは、その時点で処理された結果の数を追跡し、そのときだけ store メソッドを呼び出すことです。最も効果的な方法は、store メソッドの呼び出しをコールバックに移動することです。そうすれば、フラグの状態をチェックしている間にビジー/待機を行う必要がなく、最後の要素のチェックが成功した後に直接呼び出すことができます。もう 1 つの可能性は、最後の要素が処理されたときにイベントを発生させ、イベント ハンドラー (または同様のもの) でストアを実行することです。
var x = [ele1,ele2,ele3] ;
var expectedResults = 0;
var results = 0;
x.forEach(x,function(ele,index) {
if (ele == "some specific object") {
++expectedResults;
}
});
x.forEach(x,function(ele,index){
if (ele == "some specific object"){
MyAPI.process("command",function(result){
x[index] = result;
if (++results == expectedResults) {
database.store(x);
}
});
}
});