Comment convertir un objet différé jQuery en promesse ES6

Est-ce la bonne façon de convertir jQuery DeferredPromise

3 ответов

Oui il faut, la Promesse.l'API resolve () supporte thenable comme argument. Donc passer un objet jQuery defer marcherait très bien.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve#Resolving_thenables_and_throwing_Errors

7
répondu nox 2017-04-14 05:42:41
la source

je ne suis pas sûr que ça marcherait. Je recommande:

var p = new Promise(function (resolve, reject) {
  $.getJSON('api/values', null)
    .then(resolve, reject);
});

de préférence, Vous pouvez créer une fonction d'adaptateur comme:

var toPromise = function ($promise) {
  return new Promise(function (resolve, reject) {
    $promise.then(resolve, reject);
  });
});

var p = toPromise($.getJSON('api/values', null));
8
répondu Andreas Møller 2016-02-18 07:55:42
la source

je préfère composition:

const successCb1 = ()=>$.getJSON('api/values'),
successCb2 = (json)=>alert(json),
errorCb = (e)=>alert(e);
Promise
   .resolve()
   .then(successCb1)
   .then(successCb2)
   .catch(errorCb);
2
répondu Shishir Arora 2016-03-31 10:20:25
la source

Autres questions sur