Il problema principale di cui sono a conoscenza con l'ispezione sincrona è che non è necessario, a meno che il tuo codice non contenga la promessa di risolvere o rifiutare entro un certo numero di tick, che è esattamente il tipo di cosa su cui non devi fare affidamento.
Ad esempio, anche se non so nulla di React, sono abbastanza sicuro che il tuo esempio possa essere modificato in qualcosa del genere:
this.text = "";
var promise = ...;
promise.then(function(result) {
this.text = "Success: " + JSON.stringify(result);
}).catch(function(error) {
this.text = "Error: " + JSON.stringify(error);
});
...
render() {
// render the current value of this.text
}
Si potrebbe anche obiettare che questa versione è meglio disaccoppiata perché ora il metodo render
non ha idea che il valore di this.text
dipenda da quella specifica promessa. Ora puoi facilmente fare in modo che% co_de dipenda dai risultati di diverse promesse concatenate insieme senza causare un'esplosione combinatoria di controllo sincrono delle istruzioni if
.
L'unico altro argomento per l'ispezione sincrona di cui sono a conoscenza è che " è noto in alcuni percorsi di codice che una promessa è garantita per essere soddisfatta a quel punto - sarebbe quindi estremamente scomodo da utilizzare. Quindi per ottenere il valore della promessa dato che la richiamata viene sempre chiamata in modo asincrono. "Preferirei usare this.text
anche in questi casi, perché una promessa non è veramente garantita per essere soddisfatta finché non ci si trova nel suo .then()
handler (o .then
handler o qualsiasi altra cosa). Supponendo che altrimenti crei solo un modo ovvio per il mio programma di rompere in futuro, non importa quanto ermetico possa essere il mio argomento oggi. Se il gestore chiamato alla spunta successiva è un problema serio, allora sei già in funzione di quante zecche determinate operazioni eseguono o non eseguono per risolvere / rifiutare, che è qualcosa che devi correggere correttamente piuttosto che aggirare.