2017-08-08 1 views
1

Wir aktualisieren die Inhaltssteuerung für jedes im Eingabefenster des Aufgabenbereichs eingegebene Zeichen. So kann der Benutzer die Live-Updates für das Word-Dokument sehen.Verzögerungen beim Aktualisieren von Inhaltssteuerelementen, wenn mehr context.sync() in WORD für Mac verwendet wird

Vor kurzem haben wir Funktionen zum Sperren von Inhaltssteuerelementen hinzugefügt. Und es geschieht wie folgt:

  • Benutzereingabe (Typen ein Zeichen) in einem Eingabefeld
  • Wir für das Eingabefeld ein Inhaltssteuer suchen (beinhaltet context.sync)
  • die Inhaltskontrolle Schalte (beinhaltet context.sync)
  • aktualisieren Wert in Inhaltskontrolle (beinhaltet context.sync)
  • die Inhaltskontrolle Sperren zurück (beinhaltet context.sync)

Das alles funktioniert in Word für Windows problemlos. Aber ist extrem (sichtbar) langsam mit Word für Mac (Apple-Maschinen)

Wie sollte ich die Verzögerungen auf Mac zu überwinden?

+1

Hallo, ich brauche mehr Details dafür. a) Ich, was Mac baut, erlebst du das? Wie viele Inhaltssteuerelemente aktualisieren Sie? c) Szenarioweise, warum blockieren/entsperren Sie das Inhaltssteuerelement bei jeder Tastenkombination im Aufgabenbereich? Wäre es nicht besser, zu warten, bis der Benutzer es ausblendet, um es zu blockieren? –

+0

Vielen Dank für die schnelle Antwort. Ich stimme zu (c) und werde mein Szenario mit Fokus-in und Fokus-out aktualisieren. Aber immer noch sehe ich Verzögerungen im Vergleich zu Word für Windows. Details - Aktualisieren einer Inhaltskontrolle (einige Male 2-3) zu einer Zeit durch seinen Tag-Namen. - Word für Mac 15.36 (170702) - Mac Os 10.12.6 –

+0

Ein Beispielschnipsel wird auch hilfreich sein und auch Michaels Vorschlag unter –

Antwort

0

Wie Juan in dem Kommentar erwähnte, gibt es einige wichtige Details, die das Team untersuchen müsste. Beispielcode wäre auch gut.

Das gesagt, nur zu betrachten, was Sie beschreiben, ich denke, Sie können die context.sync() Aussagen drastisch reduzieren. Das Entsperren des Inhalts-Steuerelements, das Aktualisieren seines Werts und das Sperren desselben sollten alle in einem sync möglich sein.

Ich habe eine Reihe von Details über sync es in meinem Buch zu minimieren ", Building Office Add-ins using Office.js einen der Abschnitte von ihm Zitiert:.

Als Add-in Autor, Ihre Aufgabe ist es, die Zahl zu minimieren . von context.sync() Anrufe jeder Sync ist eine zusätzliche Hin- und Rückfahrt zur Host-Anwendung, Office Online, die Kosten für jedes dieser Rundreise und wenn , dass die Anwendung aufaddiert ist schnell

Wenn Sie festgelegt auf. Schreibe dein Add-In damit grundsätzlich im Kopf, du wi ll finden Sie, dass Sie eine überraschend kleine Anzahl von sync Anrufe benötigen. In der Tat, wenn dieses Kapitel zu schreiben, fand ich, dass ich wirklich mein Gehirn rack, um mit einem Szenario, das tat brauchen mehr als zwei sync Anrufe. Der Trick für Minimieren von Synchronisierungsaufrufen ist, die Anwendungslogik so zu arrangieren, dass Sie zuerst das Dokument für alle Informationen, die Sie benötigen, scrapen (und alles zum Laden in die Warteschlange), und dann mit einem Bündel nachgehen von Operationen, die das Dokument ändern (basierend auf den zuvor geladenen Daten). Sie haben bereits einige Beispiele dafür kennengelernt: eines im Kapitel Einführung, , wenn Sie beschreiben, warum Office.js asynchron ist; und kürzlich in dem "kanonischen Beispiel" Abschnitt am Anfang dieses Kapitels. Beachten Sie, dass das Szenario selbst relativ komplex war: Lesen von Dokumentdaten, Verarbeiten es zu bestimmen, welche Stadt das höchste Wachstum erlebt hat, und dann Erstellen einer formatierten Tabelle und Diagramm aus diesen Daten.Angesichts der "Zeitreisen" -Supermächte der Proxyobjekte können Sie diese Aufgabe jedoch weiterhin als eine Gruppe von Lesevorgängen ausführen, gefolgt von einer Gruppe von Schreibvorgängen.

Dennoch gibt es einige Szenarien, in denen mehrere Lasten erforderlich sein können. Und in Tatsache, kann es legitime Szenarien, in denen sogar eine zusätzliche Synchronisierung ist die richtige Sache zu tun - wenn es beim Laden eine Reihe von unnötigen Daten zu speichern. Sie werden ein Beispiel dafür später im Kapitel sehen.

+0

versuchen Danke, das hilft sehr viel im Allgemeinen. Dennoch gibt es einen bemerkenswerten Unterschied zwischen Windows und Mac. –

Verwandte Themen