2

内部で SOAP リクエストを作成しようとして.each()いますが、jQuery は最初の SOAP リクエストが完了する前に (リスト内の) 次のオブジェクトを実行します。どうすればロックをかけることができますか?

例えば:

$(xmlHttpRequest.responseXML).find("Items").find("PowerPlant").each(function(index, item){      
    sendSOAPRequest(item);
});
4

2 に答える 2

2

どのライブラリを使用しているかは 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);
于 2013-03-05T15:25:30.360 に答える
0

soapリクエストの完全なコールバック関数内で$.eachループの次の反復を実行する必要があります。

于 2013-03-05T14:58:55.350 に答える