Framework accetta le funzioni Promises o executor

0

Quando si progetta un'API framework è meglio avere qualcosa che accetti Promise s o avere executor function s e fare in modo che il framework generi le promesse quando necessario.

L' API Promise è definita dalla sintassi:

new Promise( /* executor */ function(resolve, reject) { ... } );

Ho provato entrambi e sono propenso a fare in modo che gli utenti del framework implementino un function(resolve, reject) per eseguire i loro recuperi di dati. Sto pensando che non posso davvero riutilizzare una promessa una volta che è stata risolta, quindi se volessi fare una ricarica dei dati avrei bisogno di rieseguire la funzione executor.

    
posta Archimedes Trajano 02.05.2017 - 03:58
fonte

1 risposta

1

Suppongo che non definirai effettivamente la funzione Promise nella tua API; Ad esempio, utilizzerai l'implementazione già definita in JavaScript.

Dicendo che MDN afferma che

The Promise object is used for asynchronous computations. A Promise represents a value which may be available now, or in the future, or never.

...

A pending promise can either be fulfilled with a value, or rejected with a reason (error). When either of these options happen, the associated handlers queued up by a promise's then method are called.

Qui possiamo vedere che una promessa viene principalmente interagita con il suo metodo allora , così come per decidere quale implementazione scegliere non importa fino a quando l'adempimento / rifiuto può essere ottenuto.

I am thinking that I cannot really reuse a promise once it has been resolved so if I wanted to do a reload of the data I would need to re-execute the executor function.

Il valore di una promessa è una cosa ancora da determinare, ma quando è possibile accedervi come qualsiasi altra variabile. da MDN Promise.resolve()

The Promise.resolve(value) method returns a Promise object that is resolved with the given value. If the value is a thenable (i.e. has a "then" method), the returned promise will "follow" that thenable, adopting its eventual state; otherwise the returned promise will be fulfilled with the value.

Quindi, ad esempio,

var thisPromise = somePromise();

//fulfilled or rejected
thisPromise.then(function(value) {
 console.log("this is the value: "+value);
}).catch(function(reason) {
 console.log("was rejected with reason: "+reason);
});

//... some code later assuming you don't change thisPromise

thisPromise.then(function(value) {
 console.log("this is the same value as before: "+value);
}).catch(function(reason) {
 console.log("was rejected with reason: "+reason);
});

Se ricarichi i dati, intendi che i dati recuperati dalla promessa devono essere aggiornati, quindi sì, sarà necessario rieseguire i dati per recuperare nuovi dati.

    
risposta data 05.05.2017 - 00:59
fonte

Leggi altre domande sui tag