Sembra che tu ti stia riferendo a redux-promise , che astrae il lavoro di creare la tua promessa- gestione della funzionalità che invia (o meno) dopo che la promessa è stata fatta. Questa astrazione è facile da usare perché è inserita nel redux store come middleware - infatti, il codice sorgente principale di tale libreria è a malapena 25 righe di codice .
Poiché tutte le versioni di Angular non utilizzano un archivio di ridondanza per impostazione predefinita, non c'è un posto dove collegare un middleware. Potresti, tuttavia, implementare una piccola funzione di utilità "dispatch di ambito" che prevede di ricevere promesse che risolvono un determinato valore:
// Somewhere in your controller...
var buildDispatcher = function (vm) {
var assign = function (values) {
Object.assign(vm, values);
};
return function (value) {
if (value.then) {
return value.then(result => {
// Here we assume that the
// result returns an object with
// keys and values
return assign(result);
});
} else {
assign(value);
}
};
};
vm.dispatch = buildDispatcher(vm);
vm.dispatch(new Promise(function (resolve, reject) {
resolve({
someKey: true
});
}));
Noterai che per far funzionare tutto questo come "magicamente" come in redux, dobbiamo assicurarci che tutti i valori restituiscano oggetti le cui chiavi sono poi copiate nello scope del controller (sto usando Angular's < a href="https://johnpapa.net/angularjss-controller-as-and-the-vm-variable/"> "controller come" sintassi qui). In sostanza, stiamo creando un oggetto di stato a livello di controller con una funzione di invio minima che decomprime i valori di ritorno delle promesse e li assegna all'ambito, oppure se il valore di ritorno non ha un metodo di indicazione .then
di promessa, assegna direttamente il valore allo scope (ma deve comunque essere un oggetto).
Potremmo anche dover eseguire la funzione $digest
(almeno in Angular 1 - non sono sicuro di circa 2+) per poter riconoscere questo compito, ma ho omesso tale dettaglio per chiarezza.