Quando richiedi da un server con API di recupero JavaScript, devi fare qualcosa di simile fetch(API) .then(response => response.json()) .catch(err => console.log(err)) Qui, response.json() sta risolvendo la sua promise. Il fatto è che se vuoi catturare gli errori di 404 , devi risolvere la promise di risposta e quindi rifiutare la promise del recupero, perché […]
Per esempio p = new Promise(function (resolve, reject) { throw ‘err’; }); p.done(); Nella maggior parte delle librerie di polyfill promesse, il fatto genererà un errore e l’esecuzione corrente verrà interrotta. Ma se usiamo p.then() , non accadrà nulla. L’errore è inghiottito dalla promise. Se usiamo p.catch , non abbiamo modo di uscire dall’esecuzione corrente. […]
Sto usando ES6 Promise. Di solito, una promise è costruita e usata in questo modo new Promise(function(resolve, reject){ if (someCondition){ resolve(); } else { reject(); } }); Ma ho fatto qualcosa di simile qui sotto per prendere la decisione fuori per motivi di flessibilità. var outsideResolve; var outsideReject; new Promise(function(resolve, reject) { outsideResolve = resolve; […]
So come gestire gli errori specifici nelle promesse ma a volte ho pezzi di codice che assomigliano a questo: somePromise.then(function(response){ otherAPI(JSON.parse(response)); }); A volte, ricevo JSON non valido che provoca un errore invisibile qui quando JSON.parse throw s. In generale, devo ricordare di aggiungere un gestore .catch ad ogni singola promise nel mio codice e […]
Sto costruendo un’app di frontend con React e Redux e sto usando gli assiomi per eseguire le mie richieste. Vorrei avere accesso a tutti i campi nell’intestazione della risposta. Nel mio browser posso controllare l’intestazione e posso vedere che tutti i campi di cui ho bisogno sono presenti (come token, uid, ecc …), ma quando […]
promise, solo per esempio var P = new Promise(function (resolve, reject) { var a = 5; if (a) { setTimeout(function(){ resolve(a); }, 3000); } else { reject(a); } }); Dopo chiamiamo quindi il metodo su promise: P.then(doWork(‘text’)); la funzione doWork si presenta così: function doWork(data) { return function(text) { // sample function to console log […]
Mi piacerebbe spiegare a me stesso l’ordine di esecuzione del seguente snippet che usa le promesse di javascript. Promise.resolve(‘A’) .then(function(a){console.log(2, a); return ‘B’;}) .then(function(a){ Promise.resolve(‘C’) .then(function(a){console.log(7, a);}) .then(function(a){console.log(8, a);}); console.log(3, a); return a;}) .then(function(a){ Promise.resolve(‘D’) .then(function(a){console.log(9, a);}) .then(function(a){console.log(10, a);}); console.log(4, a);}) .then(function(a){ console.log(5, a);}); console.log(1); setTimeout(function(){console.log(6)},0); Il risultato è: 1 2 “A” 3 “B” 7 […]
Generalmente sembra che la creazione di oggetti posticipati sia comunemente scoraggiata a favore dell’uso del costruttore Promise in stile ES6. Esiste una situazione in cui sarebbe necessario (o meglio, in qualche modo) utilizzare un differito? Ad esempio, in questa pagina , viene fornito il seguente esempio come giustificazione per l’utilizzo di un differito: function delay(ms) […]
Recentemente ho iniziato a migrare le cose da jQ a un framework più strutturato essendo VueJS, e lo adoro! Concettualmente, Vuex è stato un po ‘un cambiamento di paradigma per me, ma sono fiducioso di sapere di cosa si tratta adesso, e di averlo capito completamente! Ma esistono alcune piccole aree grigie, principalmente dal punto […]
Se ho una matrice di URL: var urls = [‘1.txt’, ‘2.txt’, ‘3.txt’]; // these text files contain “one”, “two”, “three”, respectively. E voglio build un object che assomigli a questo: var text = [‘one’, ‘two’, ‘three’]; Ho cercato di imparare a farlo con fetch , che ovviamente restituisce Promise s. Alcune cose che ho provato […]