Javascript: Nicht blockierende Möglichkeit zu warten, bis eine Bedingung erfüllt ist

Ich habe mehrere ASP.NET UpdatePanels, von denen jedes einen AsyncPostBackTrigger hat, der mit dem serverseitigen Klickereignis der gleichen Schaltfläche verknüpft ist. Da jeweils nur ein UpdatePanel seine Aufgabe erfüllen kann, verwende ich.get_isInAsyncPostBack() desPageRequestManager um zu verhindern, dass ein Benutzer auf einen anderen Teil der Seite zugreifen kann, bis das asynchrone Postback abgeschlossen ist.

Ein anderer Teil dieser Seite muss mehrere Update-Bereiche nacheinander dynamisch aktualisieren. Da die Update-Panels asynchrone Trigger verwenden, wird der Aufruf ausgeführt__doPostBack("<%=ButtonName.ClientID %>", 'PanelId'); feuert asynchron. Aus diesem Grund wechselt es schnell zur nächsten Iteration der Schleife und versucht, das nächste Fenster zu aktualisieren. Die zweite Iteration schlägt jedoch fehl, da bereits ein anderes Aktualisierungsfenster ein asynchrones Postback ausführt.

Im Idealfall könnte man warten, bis.get_isInAsyncPostBack() Gibt false zurück, ohne andere Clientaktivitäten zu blockieren.

Nachforschungen haben mich zu vielen Menschen mit meinem Problem geführt, von denen fast allen geraten wird, sie zu benutzensetTimeOut(). Ich weiß nicht, was das für mich funktionieren wird. Ich möchte nicht eine bestimmte Zeit warten, bevor ich eine Funktion ausführe. Ich möchte einfach, dass mein Javascript wartet, während ein anderes Skript ausgeführt wird. Warten Sie vorzugsweise, bis eine bestimmte Bedingung erfüllt ist.

Ich verstehe, dass viele wahrscheinlich vorschlagen wollen, mein Modell zu überdenken. Eigentlich ist es nicht mein Modell, sondern eines, das an unser Entwicklerteam übergeben wurde. Aus zeitlichen Gründen ist ein Umschreiben des Modells nicht möglich. Die einzige Möglichkeit besteht darin, dies zum Laufen zu bringen. Ich denke, wenn ich den Client-Code warten lassen könnte, ohne ihn zu blockieren, wäre mein Problem gelöst.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage