Zdravím,
měl bych otázku jak by bylo možné přerušit již běžící postback (v tomto případě z důvodu toho, že již běží příliš dlouho a uživatel se rozhodl akci přerušit).
Děkuji za rady.
Zdravím,
měl bych otázku jak by bylo možné přerušit již běžící postback (v tomto případě z důvodu toho, že již běží příliš dlouho a uživatel se rozhodl akci přerušit).
Děkuji za rady.
Určitě to je možné, jen aktuálně trochu komplikované. Jako první krok si budete muset napsat vlastní postback handler, kde dostanete přístup k JavaScriptovému objektu PostbackOptions, kde můžete nastavit abortSignal (pozor, že options se zároveň jmenují parametry toho postback handleru, tzn to co nastavujete v markupu):
dotvvm.postbackHandlers["my-abort"] = (options) => {
return {
execute(callback, postbackOptions) {
const abortController = new AbortController()
postbackOptions.abortSignal = abortController.signal
someeventregistration(() => abortController.abort())
return callback()
},
};
};
Další info jak ho zaregistrovat a použít je na:
Pak tento postback handler můžete aplikovat na libovolnou controlku.
Nevím podle čeho chcete určit, že už je potřeba postback přerušit, předpokládám, že kliknutí na tlačítko nebo timeout. V každém případě budete muset zaregistrovat ručně v JS nějaký event handler, který zavolá abortController.abort(). Pokud byste chtěl přerušení udělat na základě změny hodnoty view modelu, můžete použít postbackOptions.knockoutContext.$data.PostbackShouldBeCancelled.subscribe(newValue => { if (newValue) { abortController.abort() } })