内部で SOAP リクエストを作成しようとして.each()
いますが、jQuery は最初の SOAP リクエストが完了する前に (リスト内の) 次のオブジェクトを実行します。どうすればロックをかけることができますか?
例えば:
$(xmlHttpRequest.responseXML).find("Items").find("PowerPlant").each(function(index, item){
sendSOAPRequest(item);
});
どのライブラリを使用しているかは 100% わかりませんが、一部sendSOAPRequest
のバージョンの一部の呼び出しでは、async
変数を false に設定して、一度に 1 つずつ実行するように強制できるはずです。
$(xmlHttpRequest.responseXML).find("Items").find("PowerPlant").each(function(index, item){
sendSOAPRequest(item, {async: false}); //Might be other syntax. Look at the doc for your library.
});
これが機能しない場合は、Brad M が提案するように実行できます。
items = $(xmlHttpRequest.responseXML).find("Items").find("PowerPlant");
function sendSoapReq(itemList){
if(itemList.length > 0)
{
sendSOAPRequest(itemList.splice(0,1), function(){
sendSoapReq(itemList);
});
}
}
sendSoapReq(items);
soapリクエストの完全なコールバック関数内で$.eachループの次の反復を実行する必要があります。