2015-07-30 16 views
7

Una Promessa è un tipo di oggetto che funge da segnaposto per un risultato futuro, come il corpo di una richiesta HTTP o il valore di ritorno di una chiamata al metodo Meteor. Fondamentalmente qualsiasi funzione che ti obbliga a passare un callback per ricevere il suo valore di ritorno (invece di restituirlo) è una funzione asincrona, e il valore che restituisce può essere rappresentato da una Promessa.Posso restituire un valore asincrono (una Promessa) da un helper Meteor?

Il problema in Meteor è che helper metodi sono destinati per funzionare soltanto con valori sincroni - come il testo in una pagina web, o il contenuto di una raccolta Minimongo. Quando si restituisce una promessa da uno, l'aiutante

  • mostra [object Promise] invece del valore deliberato
  • non aggiorna quando la promessa si risolve

Alcuni tentativi di risolvere questo esiste: simple:reactive-method e arsnebula:reactive-promise , ma ti richiedono di cambiare i tuoi aiutanti con un certo stile, o funzionano solo con Meteor.call invece di limitarti semplicemente a restituire una promessa generica.

C'è qualcosa che ho trascurato, o c'è una soluzione in lavorazione? Ci sto provando da un po 'di tempo e potrei lavorare su qualcosa di me stesso se non c'è una risposta ufficiale.

+0

Fornisci un esempio di codice di ciò che hai provato fino ad ora. –

+0

Buona domanda. Stai cercando fondamentalmente di usare 'simple: reactive-method' con una promessa invece di un metodo, ma altrimenti è la stessa idea. –

+0

Sì, @AndrewMao, ma ReactiveMethod non è concatenabile, non è una promessa completa .. –

risposta

0

Anche per quanto riguarda le altre librerie là fuori, penso che la risposta per ora è di andare con il pacchetto deanius:promise (dichiarazione di non responsabilità: l'ho scritto, con l'input degli autori di alcuni altri pacchetti).

Fa quello che chiede la domanda, e aggiunge alcuni tocchi come errore controllabile e messaggi di caricamento.

Problemi correlati