2 votes

Le cadre fluide prend-il en charge les transactions ?

Par exemple, dans FluidFramework/examples/data-objects/badge/src/BadgeClient.tsx :

    const changeSelectedOption = (newItem: IBadgeType): void => {
        if (newItem.key !== model.currentCell.get().key) {
            const len = model.historySequence.getItemCount();
            model.historySequence.insert(len, [
                {
                    value: newItem,
                    timestamp: new Date(),
                },
            ]);
            model.currentCell.set(newItem);
        }
    };

L'opération d'insertion de l'historique réussit-elle/échoue-t-elle toujours en même temps que l'opération de mise en place des cellules ?

2voto

Sam Broner Points 428

Fluid ne prend pas en charge les transactions au sens traditionnel du terme, mais Fluid dispose de "Group Ops". Celles-ci peuvent être créées à l'aide de la fonction orderSequentially api sur le ContainerRuntime. Certains DDS ont une enveloppe autour de cette API au niveau du conteneur.

Les opérations de groupe vous permettent d'emballer un groupe de opérations en un seul message, de sorte que le service de commande de Fluid ajoute ces opérations à l'ordre du jour de l'événement. Diffusion totale de la commande dans l'ordre.

Les opérations ne peuvent être regroupées qu'à l'intérieur d'un seul conteneur, car c'est la limite de la diffusion totale de la commande. Les opérations peuvent être regroupées à travers les DDS dans un seul conteneur. C'est toujours différent d'une transaction car nous ne garantissons pas le retour en arrière des opérations précédentes dans le cas où une opération ultérieure serait invalide.

Vous pouvez voir un exemple dans le Séquence DDS .

Ci-dessous, nous allons soumettre deux ops pour "hello" et "world" en une seule opération de groupe, en nous assurant que helloworld sera soumis en une seule fois sans intercaler les entrées.

const op1 = {
    pos: 0,
    seg: "hello",
    type: MergeTreeDeltaType.INSERT,
}

const op2 = {
    pos: 5,
    seg: "world"
    type: MergeTreeDeltaType.INSERT,
}

const groupOp = {
    ops: [op1, op2],
    type: MergeTreeDeltaType.GROUP,
}

sharedString.groupOperation(groupOp);

El Objet fluide ProseMirror a un code plus approfondi

2voto

Tony Points 51

Pas les transactions, mais il prend en charge les lots. Les lots garantissent qu'aucune autre opération ne sera intercalée entre les opérations du lot. Vous pouvez créer un lot en utilisant la commande orderSequentially Api

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X