Comment convertir un objet différé jQuery en promesse ES6
Est-ce la bonne façon de convertir jQuery Deferred
Promise
<!--5?
var p = Promise.resolve($.getJSON('api/values', null));
existe-il d'autres façons de le faire?
Quelles sont les limites? J'ai lu quelque part que jQuery différé ne supporte pas les exceptions, donc je suppose qu'une promesse créée à partir d'un différé ne le ferait pas non plus. Est-ce correct?
25
demandé sur
Chris Martin
2015-08-24 10:57:54
3 réponses
Oui il faut, la Promesse.l'API resolve () supporte thenable comme argument. Donc passer un objet jQuery defer marcherait très bien.
7
répondu
nox
2017-04-14 02:42:41
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 04:55:42
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 07:20:25