2016-07-17 90 views
5

Voglio sapere se le JS promesse facessero parte di es5? Se è così, perché non funziona a volte nei browser più vecchi e dobbiamo aggiungere un polyfill per lo stesso. Inoltre, quale polyfill dovrebbe essere aggiunto in quel caso, uno es5 o es6? Ho un po 'di confusione per quanto riguarda lo stesso.ES5 vs ES6 Promises

+0

ES5 non ha avuto promesse. Le librerie come jQuery o Angular avevano le loro implementazioni di promesse proprietarie. – jfriend00

+0

ES5 non ha promesse come parte della lingua. Per ES5, le promesse sono solo uno schema di progettazione. Ci sono davvero molte librerie in ES5 che implementano molti tipi diversi di promesse. Puoi persino implementarli da solo perché è solo un modello di design. – slebetman

+0

@slebetman Puoi fornirmi un esempio semplice per l'implementazione della promessa? –

risposta

19

ES5 non ha avuto promesse. Le librerie come jQuery o Angular avevano le loro implementazioni di promessa personalizzate e non standard.

Le implementazioni di Promise popolari da utilizzare con ES5 sono Bluebird (che è compatibile con lo standard ES6) e Q (che non era originariamente compatibile con lo standard ES6, anche se sembra muoversi in quella direzione) e RSVP.

Né i polifibri effettivi non sono di ostacolo se sono presenti promesse native perché aggiungono funzionalità aggiuntive.

Ci sono alcuni polifibri puri per le promesse ES6. Ecco uno che è un sottoinsieme di RSVP: https://github.com/stefanpenner/es6-promise.

Non ci sono motivi per utilizzare più di un polyfill come potete leggere qui: Are there still reasons to use promise libraries like Q or BlueBird now that we have ES6 promises?

Chiedendo una raccomandazione di una biblioteca specifica polyfill è considerata off-topic qui su Stack Overflow quindi non voglio commentare su questo .

+0

@ jfriend00 Ho trovato su googling questa codepen http://codepen.io/tijmenbruggeman/pen/LVOqBq È fuorviante? –

+1

@ParamSingh - Che cosa ha a che fare codepen con qualcosa qui? – jfriend00

+0

@ KirillSlatin - Ho già cambiato "personalizzato e non standard", anche se preferirei spendere energie su contenuti significativi piuttosto che usare parole con parole che non potrebbero confondere nessuno. – jfriend00