come si utilizza Promises?
È possibile utilizzare promesse "native" utilizzando il nuovo costruttore, Promise. Le basi dell'API possono essere trovate over on MDN e uno studio approfondito su Promises can be found on HTML5Rocks.
I moduli (ad esempio il modulo fs nativo) funzionano automaticamente con Promises?
Non lo fanno, ma it's not so difficult to make a wrapper. Naturalmente, fare questo per l'intera API del Nodo potrebbe essere un po 'noioso.
Uno dei commenti nel PO menzionato Bluebird PromisifyAll, che sembra un modo magico per convertire un intero modulo per utilizzare Promises. Nifty!
Mi aspetterei alcune API Promise-ified nelle prossime versioni di Node, ma non ne sono certo. Potrebbe esserci un problema o una discussione da qualche parte intorno a questo ... forse sul progetto io.js. Lo indago e lo aggiorno se trovo qualcosa.
Per quanto riguarda il motivo per cui abbiamo Promises e un'API in stile callback? Questo è probabilmente dovuto al fatto che è più facile essere additivo, aggiungendo Promises, piuttosto che apportare modifiche all'API che potrebbero eventualmente infrangersi, come rimuovere i callback.
Oppure i moduli devono essere scritti appositamente per funzionare con Promises?
Lo fanno.
Come fai a sapere con cosa puoi utilizzare una promessa e cosa non puoi?
documentation è sempre il posto migliore per le domande dell'API. Non so nulla di ciò che restituisce Promises, ma nel mio caso uso un piccolo sottoinsieme dell'API Node nel mio quotidiano.
Ci sono state così tante diverse implementazioni Promise (Q, Bluebird, ecc.) Che sono confuso su dove iniziare con Promises nativo nel nodo 4.x.
Avete domande specifiche su queste diverse implementazioni? Il modo in cui penso a questo è che le Promesse native sono piuttosto minime. Sono abbastanza bravi da rendere il codice asincrono un po 'più pulito, ma non hanno fronzoli.Quelle altre librerie di cui parli fare due cose:
- fornire una Polyfill per gli ambienti che non supportano promesse nativi
- add vari gradi di caratteristiche di fantasia
Il primo caso d'uso non è più necessario nel nodo. Quindi è una questione di determinare se si desidera/ha bisogno di una di quelle caratteristiche di fantasia.
Fatemi sapere se questa risposta non è soddisfacente, e cercherò di aggiornarlo con maggiori informazioni!
I _promise_, riceverai sicuramente la risposta presto :) – Tushar
Non conosco moduli node.js incorporati che restituiscano promesse per le loro operazioni asincrone. Usano ancora le stesse callback che hanno sempre usato. Quello che puoi fare è "promettere" a chiunque di queste interfacce di rendere le funzioni che restituiscono promesse fuori dalla convenzione di chiamata async standard node.js. Infatti, usando cose come 'Promisify.promisifyAll()' di Bluebird, puoi promisificare un intero modulo a 'require()' tempo come questo 'var fs = Promise.promisifyAll (require (" fs "));' e poi ogni la funzione in quel modulo ha una nuova versione di promessa. Molto utile. – jfriend00